If you are just starting out, it's best to go with a more conventional provider.
I'm not a guru with AWS or systems admin in general, but these are the sorts of issues I have run into in the past.
I highly recommend getting started with AWS now. They have a free tier (1 year) which you can use. Heck, you could play around with it, just using it for the company blog.
AWS is great in terms of autoscaling. True, the I/O isn't great, at least for the free tier (all the more reason to start now, while server load isn't that big yet). I wrote a blog post on starting out with AWS last year, check it out if you like.
This is all super helpful as this is my first major undertaking.
Basically chef bootstraps the node from EC2, since you can only give it an initial keypair. Chef server will SSH into your box and install user accounts, the firewall, the webserver, tweak some settings (like mounting EBS volumes, restricting SSH, etc), install virtualenv and python. We use fabric to deploy, and that's when the code installs Django and whatnot in the virtualenv, as well as put the code on the machine.
Can't tell you if Chef is the best option. It's what I've been learning but it does have some rough edges. Finding the "right" cookbook is hard, because Opscode's listing isn't always the best. If you have concerns about using any particular setup to keep your environment homogenous (e.g. all init, upstart, runit, or supervisor) you'll have to put in quite a bit of work.