Any reason NOT to run Linux in a VM all the time?

Assuming you can get everything working, and you don't want to do resource intensive tasks such as playing games or doing large compiles, then I think you'll be fine.

There's some basic issues you will probably encounter:

  • guest time incorrect
  • guest screen size or color depth incorrect
  • can't access USB devices (printers, phones, etc.)

To fix this, you should install VirtualBox guest additions. See the VirtualBox Arch Linux guests guide for details.

To get some extra features, such as USB 2.0 and Intel PXE support, you can also install the VirtualBox extension pack.

After that, there's a few issues you should know about:

  • can't use USB 3.0
  • can't use IEEE1394/"FireWire"
  • can't use seamless mode in combination with dual-head
  • time gets out of sync on 64-bit guests

Obviously your Linux VM will be affected if your Windows system crashes too. Issues I've had happen recently:

  • Windows host crashes due to driver bug (blue screen)
  • Windows host reboots due to security update

When running a virtual machine the biggest performance hit will be to your disk I/O. If at all possible, put your VM on a separate disk and/or use a solid-state drive. Using a virtual SATA drive instead of a virtual IDE drive can help too.

I teach a hands-on class on Linux, and unfortunately, by company policy I'm not allowed to reformat the class-provided laptops, so we're going by the VirtualBox guest approach.

Ignoring all performance concerns, here are some notes / problems I noticed:

1) Bridged mode and Wireless

Some wireless cards apparently have difficulty having "dual identities", which means that our routing / firewall / networking lessons go to hell. It's a known issue - most wireless drivers do not support bridging.

bridge | The Linux Foundation - It doesn't work with my Wireless card!

This means that if you're using a wireless interface, you have to do some extra work for the guest to have a "public" IP.

2) Desktop Integration

Save for a few wallbangers in design, the modern desktop environments are pretty well thought-out, and offer some conveniences that are lost when they don't have full access to the input/output, or to the device attach/disattach tool. For instance, the Vbox menu at the bottom gets really annoying if you have a window chooser or notifications there. And some machines use the Ctrl+Alt+cursor_key shortcut (switching workspaces) as to flip the display.

I mean, compare how easy it is to disattach a USB device in GNOME, vs the equivalent number of submenus / clicks in Windows, and I know which one I'd prefer any day.

3) USB "stealing"

Sometimes, windows just doesn't want to let go of a USB drive - telling virtualbox to attach it doesn't always work - most likely when windows is reading the contents for some reason or other. And then there are some USB drives that aren't straight-up storage devices, but do a mode switch-like action to make your drives accessible - those are annoying to attach to the Linux machine.

4) Stability

It's typically easier to "break" Windows than Linux, which is why you typically want to have Linux "protect" Windows instances, rather than vice versa. I already lost a couple of work days with the staff overwriting the wrong files and ending up breaking both our installation of Virtualbox and our Linux images.

5) Command Line Tools

On Linux at least, you have the option of mucking around with Vbox disk images using qemu-nbd and the network block device.

QEMU/Images - Wikibooks, open books for an open world - Mounting an image on the host

This lets you look at and modify the contents of the guest OS disk without having to boot it, for example, if you rendered it unbootable.

You could also do things like scripting backups of VDIs - or just their contents, or changing VirtualBox "profiles" via symlinks - a lot easier on bash.

Don't forget that a VM is an emulation. Your Unix system will never be as powerful in a VM than installed. Archlinux is made to fit your tastes, it is a distribution you can customize to it's maximum.
I used to make it run on a VM, though I thought about installing it definitely on my computer. Now my system boots in about 15 seconds, my builds are a looooot faster and everything is working better.
Archlinux is not that big, you can install it on a small partition (just make sure you have enough space for your programs on your root partition (I had to reformat my root partition because it was too small)). If you use Windows only for playing, you should consider that option =)

PS: Yes installing straight on your computer will make your life amazing. :P