AWS offers a dizzying array of options, features and configurations that make it easier to configure and deploy a VM than having to build it yourself from scratch. Pretty much any kind of OS you would want for a VM are available including several distros of Linux, Unix, Windows, Docker and more. A free tier is offered that allows you to use a micro instance for playing around/testing/small website, which is great way to offer a trail (as opposed to a time-based limit). In fact, many of AWS' offerings have a free tier that allow a good amount of play before any need of money. There is support for everything you'd expect such as multi-region deployment, load-balancing, monitoring, alerts, access security, firewall/network configuration, remote access through SSH or AWS CLI and more. Most importantly I would say is that because it's part of AWS, EC2s have access to all the other amazing offerings AWS provides such as AWS API messaging, lambda functions, dynamo databases, auto-scaling ElasticBeanstalks and more.
Because of the complexity and amount of options allowed, it can be intimidating/difficult to quickly spin up a new VM. Also, you have to be quite familiar with other AWS products to know how to get configurations just right. Also, sometimes it's difficult to know what may bump you into a paid-tier when you are evaluating a free-tier product.
With AWS EC2s there is no worry about running and managing our own servers, which helps with cost and monitoring, especially if something goes down. And being inside AWS there is easy access to wide host of tools and features we don't have to worry about installing, configuring, troubleshooting just to get it to work. If we want a feature or a component, we just select it and launch it.