What are the differences between Azure Virtual Machines & Cloud Services
An Azure Virtual Machine is basically what it sounds like -- an instance of a Windows or Linux VM that you control. Azure basically just gives you a space to host that VM. You control the O/S, updates, etc.
An Azure Cloud Service (a web role, a worker role, etc.) is a layer above the VM. Azure controls the VM instance that your role runs on (O/S, updates, etc.), while you are just concerned about your application. For a web role, that would be the code for a web application (an ASP.NET site, for instance); for a worker role, that would be the code for a service that runs in the background.
With a Cloud Service, you deploy your application to your role instances. You really don't have control over how those instances are running (and you really don't care) -- you're just concerned that your code works.
So if you need full control over a VM, then an Azure Virtual Machine is the direction you should go. If you're developing applications and aren't as concerned over the infrastructure (O/S updates, etc.), then the cloud services (roles) are the way to go.
I hope this helps. Good luck!