If you have extended your CRM always deploying objects to the database (like plugins) and don't have any special objects like legacy ISV pages, than all that you need to do is restore the MSCRM_instancename and use the organisation manager to import the
organisation into the crm server.
Deletion is not recoverable. you should control who has power to delete using roles. if anyone without the role need to delete the record you can recommend them to deactivate rather than delete
You can snapshot or clone you VMs without any problem.
yes that should be enough.
I Hope I could help. If I have answered please mark as 'Answer'. If was just helpful, please vote. Thanks and happy coding! Bruno Lucas, http://dynamicday.wordpress.com/