I saw 3 different VMs while learning about Smalltalk. They are Squeak/Pharo/Newspeak. What's the difference between them?
A virtual machine for Smalltalk is quite basic. It contains a set of primitive instructions that are directly referenced from Smalltalk code. This makes the the actual VM easily plugable. So the Squeak is often used for experimenting with virtual machine.
Pharo is a project to replace Squeaks basic library because Squeak's look and feel is somewhat dated. It uses the Squeak VM and is mostly compatible but the interface is completely different.
On the VM side of Squeak there is the vanilla VM. As far as I know it started as part of the Squeak project and is still used.
Then a while back Eliot Miranda, a researcher in VM's, announced he was developing a new optimized VM for Squeak. Cog is open source and can be used with Squeak and Pharo. It is still actively developed, but faster than the basic VM.
Newspeak is a different animal all together. It is an experiment to create a Language which uses pure message passing as the only primitive of the Language. It is based on the Squeak VM but not really Smalltalk. You can find more information on it at http://bracha.org/Site/Newspeak.html.