VMM
I used Virtual Box for years, but have recently switched to KVM. I used both for automated testing of software.
Both have GUIs for creating and managing the VMs, and both have command line tools which can do everything the GUI can plus a great deal more. I generally use the GUI to setup the VMs, do some initial testing of the VMs, and to debug my automated testing set up. I use the command line tools to script all of the actual software testing.
As to how they compare, I found both to be roughly equivalent for what I use them for, although KVM seems to be better maintained as a project than VB has been lately (things would stop working after an update and Oracle would take a long time to issue a fix).
I don't know the name of the VB GUI, but the one for KVM is called Virtual Machine Manager (VMM). I use only a fraction of the features in the VB GUI, but everything that I wanted from the GUI was there.
KVM VMM has fewer features, which is a plus and minus. From a plus perspective it means that I was able to figure it out fairly quickly, as the number of options is much more limited. On the minus side is that VMM doesn't create or delete snapshots in the GUI itself, you have to do that from the command line. However, that has not turned out to be a big deal so far.
With VB you can give snapshots a meaningful name, while with KVM they're simply a random integer. While the meaningful names were nice to have in VB, so far the lack of them hasn't been a big deal with KVM.
The story mentions networking. My test scripts SSH into each VM as it is running to run the tests on the software under development. The default way that VB does networking (localhost plus port) results in some rather unusual address formats and a bit of going over the ssh man pages to figure out how to use it. It also means that the address format for VMs is different from the address format for actual hardware over the network.
With KVM I installed the optional "libnss" and found that addressing VMs is done by default in the normal way the same as for actual hardware.
It may be possible that VB can be made to work the same as KVM in this respect, but you need to be a networking expert to stray away from the defaults for either as neither one documents this area very well. They just assume that you know lots about network stacks and can figure it out for yourself. When I started using VirtualBox however I was too busy to spend the time to deviate from the defaults, and when I got things working it was less painful to just leave it as is than to change everything. With KVM I just installed libnss and everything just worked the way it ought to.
I test using all the major Linux distros, BSD, and Windows, so I have plenty of experience installing them in VMs. I've looked at both Vagrant and Virter, and didn't really see any advantage to using them. Things may be different if I were responsible for setting up and managing VMs for large development teams for multiple projects. You really have to dig into how you would use them in your particular application to see if they really offer any advantage.
As for vmshed, so far as I can see it's meant for testing the VMs themselves, as opposed to just using the VMs to test software applications. If you are managing a project like Virter then you probably need vmshed. I don't think the way it works however is suitable for normal application testing. So far I haven't seen anything useful for running application unit tests on a combination of VMs and actual hardware that is suited to being hosted on a regular desktop for use by a single developer or small team (as opposed to cloud services). I have my own custom solution that works in my use case.