I use VirtualBox and VMServer, but prefer VirtualBox because it can
be run in seamless mode. This means that I have an Ubuntu bar at the
top (where Gnome, the desktop that Ubuntu uses puts it by default) and
a Windows bar at the bottom where XP puts it by default. The desktop is used by
both Ubuntu and Windows and you can share files, devices and cut and paste
between the two.
In Ubuntu, the hard drives are all visible and can be used. In
Windows, you only see the Windows virtual drive, but there is a common
folder that is shared between the two OSes and you can copy files to that folder
from either Linux or Windows.
My CD and DVD ROMs are usable from either, as are usb devices.
Sometimes you will have to unmount and remount them manually, but this
is easy to do, because they will appear to be in use and otherwise not
available.
My VirtualBox virtual machine is configured to have 512 MBs of RAM
reserved for Windows (out of my 3 GBs altogether) and I have reserved
64 MBs of my 512 MBs of video memory for windows, so my VM behaves just
as a Windows computer with 512 MBs of RAM and 64 MBs of video. My VM
has a C:\ drive which is 15 GBs so I can install lots of programs. I
have just about anything that I want in there.
You can copy the VM from one computer to another and even from VMWare to
VirtualBox.
Virtual machines are used by many network administrators to simplify
their job. They can even be viewed as disposable since you can save and
copy them. This way if your Windows drive gets a virus, you can just
delete it and use a fresh copy. They are quite useful.
As for drivers, you can use Windows drivers in Windows and Linux drivers in
Linux. However, due to the nature of VMs not everything may work. I have a iPod
wannabe (Philips) that is not recognized by Ubuntu, so it is not available to me
in Windows XP in my VM. However, as long as the host machine (Ubuntu) sees it
then it can be used in Windows and you can use use the Windows driver to
configure it.