I use virtual machines to do a lot of my daily development. It's also how I log into my machine at work, as the VPN setup with the state is a bit invasive on the host machine (it has a lot of plugins and two-factor authentication to ensure the highest security).
Update: I have recently switched to VMWare Workstation because it supports sharing USB devices with the host.
In the past, I have used a lot of different VM hosts, including Microsoft's Virtual machine. However, over the past few years, I have relied solely on Oracle's Virtual Box, which is open-source and free for non-commercial use.
Well, the other day, VirtualBox refused to load ANY of my VM's. I installed the latest version, but I still had non-functioning VM's. After wasting an hour trying to get it working, I suddenly realized that I'm running Windows 10 professional, and it is compatible with Microsoft's Hyper-V technology.
So, after a few minutes reading up on it, I got it all setup and had new virtual machines up in no time. Since I'm a "Windows Insider", I was able to download the Insider edition of Windows 10 to run on the VM's.
From the Microsoft site on Hyper-V for Windows 10:
"Many versions of Windows 10 include the Hyper-V virtualization technology. Hyper-V enables running virtualized computer systems on top of a physical host. These virtualized systems can be used and managed just as if they were physical computer systems, however they exist in virtualized and isolated environment. Special software called a hypervisor manages access between the virtual systems and the physical hardware resources. Virtualization enables quick deployment of computer systems, a way to quickly restore systems to a previously known good state, and the ability to migrate systems between physical hosts."
Then, I simply created a "master" VM with all of my drivers and base software installed and made copies to use for other development purposes. It's great to use VM's for development, because I can just spin up a new VM and test code. If something breaks, I can just delete the VM and clone it again.
I really like the way that Hyper-V's machine management works. Also, if I want, I can hook a machine up to the network and then push my image to "real" hardware, or even upload it to Azure to run in the cloud.
It's a very nice setup. It also lets me create virtual machines for Windows phones or other devices.
I have also created a Linux VM for testing the newest .NET core and Linux development tools from Microsoft.
As you can see, it has a list of all of my virtual machines. I can start and stop them from this dashboard. Once the device has been started, I can connect to it. The connection works much like Remote Desktop, yet it's on the local machine as a VM.
The hardware configuration is amazing. You can add additional hardware and even give the VM access to the 3D accelerator on your graphics card.
Ultimately, VirtualBox is the winner in most situations because it is open source and the fact that it runs on multiple operating systems whereas Hyper-V only runs on Windows operating systems. However, that's not an issue for me, so I've really enjoyed the stability and capability of Hyper-V.