We receive roughly 10 emails a day for new vm creations or take downs and I am wondering if its possible to create a webapp that would allow the customer to pick and choose what they need on this VM and click say "Create" and have it spin up by itself.
Sounds like you could do with a basic installation of VMWare's vCloud Director.
Sure. vSphere has an API for such things. http://www.vmware.com/support/developer/vc-sdk/index.html
uProvision is a web application for automatically provisioning environments of VMware virtual machines, optionally within private networks. You can define templates for your desired configuration of virtual machines. It runs on top of an open-source command line provisioning tool called Terraform.
Disclaimer - I am a developer on uProvision and Terraform.