App Services :
When you want to deploy your application to Azure IIS conatainers without requiring any control,web apps should be preferred.It's a part of Azure Paas.
1) When you need IIS.
2) Satisfy with your wensite/web apis running in shared space.
3) Not rquired to have any control beyond IIS.
Cloud Service :
When you want to deploy your application with some control over the platform without being concerned about OS,hardware then cloud service comes into picture.It's a part of Azure Paas.
1) On cloud service you can deploy website(Web Role) as well as Worker Role(Background Process)
2) Spohisticated deployment process and isolated hardware.
Virtual Machine :
When you required full contol on hardware,OS,IIS,VHD etc for your application VM should be considered.
1)Total control on environment.
2)Migrate existing infrastructure.