I need both running on one computer
Well, "it depends".
Which do you see yourself spending more time in? That should probably be your primary OS.
Keep in mind that device support for VMs is still a bit lacking, so for example it's complicated to sync your iPhone with Windows in a VM on Ubuntu, so that'll also factor into your decision.
There is no right answer, only which works for you.
I develop on Ubuntu, yet work oriented communication which happens all day still requires Office.
- virtualization takes much of the pain out of O/S upgrades and maintenance; I'd virtualize the environment that changes most rapidly
- virtualizing your development environment allows you to back it up and restore it more easily
- but, depending on how heavy-weight your software stack is, the performance hit from virtualization may be unacceptable
Assuming sufficient disk space, you could run Ubuntu and Windows instances under an Ubuntu host.
If you only need Windows for Office, you should probably look at Crossover. It's wine polished, with some tricks and licensed bits (like fonts) to run some applications. It's way cheaper than a windows license and the folks that sell it are the main funders of Wine.
Depending on the version of Office that you need and the exact programs (Word, Excel and Outlook are usually much more polished than Frontpage) it could be a better solution than a VM.
I use VMware Workstation (currently using version 7.1) on Ubuntu to run both Windows 7 and Windows XP guest virtual machines. I am primarily running Linux applications so I find that it works quite well, but I've never run VMware with a Windows host OS so I can't really compare.
In cases where I need to run just one particular application I really like the Unity mode of VMware Workstation (which hides the guest desktop and displays open guest windows directly on the host desktop). It is my understanding that Unity works with either a Linux or Windows guest OS.
When running something like Microsoft Office on a Windows guest virtual machine, I recommend making sure that the host computer has a enough RAM available to run both the host and guest comfortably.