You have quite a bit to learn!
The first thing is to make sure that you understand how much resource will be needed by your virtual machines. You will need a fairly meaty machine to achieve what you want. Hard to say exactly without knowing a lot more about the specifications of the machines you are replacing.
As you have realised, there are many ways to do what you want. All the way from Open Source though to full commercial, enterprise grade, systems. I'm guessing from the phrasing that you want to err more towards the free end of things.
Almost certainly the easiest method is to use VirtualBox. It's command line tools allow you to script the creation of new machines from existing ones and there is a PHP-based web interface too that someone has created. Alternatively, one of the free versions of VMware.
With VirtualBox, the easiest way to deploy multiple instances of a virtual system from a single master image is to set the master images virtual drive to be "immutable". VB contains something called a "differencing engine", so any changes to a running system are stored in the differencing layer. By default, these changes are lost when the "system" is powered off, however, you can change this if you want to. See here for more info.
The alternative is to clone the virtual disk image. You have to use the VB command line to do this otherwise VB will not recognise the cloned image.
There are also ways to convert physical to virtual machines. Personally, I would only do this if I really had to. Better by far to create a clean image.
You can do pretty much all of this using the other tools you have also mentioned but, as a beginner, I would recommend using VirtualBox as your starting point. Once you have understood the concepts and had a go at setting everything up, I would then do some extended testing to make sure that the performance is everything you need it to be. If not, only then would I start to look at the other options.