About desktop development, you will need to consider your clients. If you develop for Windows clients, then probably you'll be better off running Visual Studio, even if inside a VM. If you develop for other platforms or write code that does not depend on Windows API's, you are pretty much free to use anything. Eclipse, NetBeans, IntelliJ etc don't change between platforms.
The bulk of virtualization is the concepts - virtual networks, disks etc. You can learn a new UI rather easily.
I am not sure what is the situation on .NET web development for other OSs, but I keep hearing Microsoft is doing a great job with that.
I am mostly web these days and all my tools work pretty well under Windows (even though the last time I did it I used Cygwin because it was well before the Ubuntu on Windows thing).
The bulk of virtualization is the concepts - virtual networks, disks etc. You can learn a new UI rather easily.
I am not sure what is the situation on .NET web development for other OSs, but I keep hearing Microsoft is doing a great job with that.
I am mostly web these days and all my tools work pretty well under Windows (even though the last time I did it I used Cygwin because it was well before the Ubuntu on Windows thing).