OpenNebula uses the notions of "Images" and "Templates". From what I've been able to understand so far, an image is first downloaded from the marketplace, then a template is created from it, and finally a virtual machine is created from the template.
This seems a bit superfluous to me. Why have both images and templates? What's the difference? Why not a two-step process like: get an image (or template?) and then create a VM from it?
Having Templates and Images allows you to use the same image in different VMs. For example, if the image is non-persistent you can launch a VM with 4GB of memory and another one with 16GB without the need to duplicate the source image in your storage.
The reason is that Templates are simple text files (with XML Syntax) and don't require that much space as Images do. Templates are definition, where you can specify CPU, memory, disks, network etc for different VMs. This is why it is very useful to have both Images AND Templates. Docs: [http://archives.opennebula.org/documentation:rel4.4:template][2]
Real example: wiki.ieeta.pt/wiki/index.php/OpenNebula#Creating_an_OpenNebula_template