You can do quite a few things in the cloud. I'll go into specifics about what my provider supports. I use Linode (http://www.linode.com/) which has six datacenters around the globe (including one in London). They're great, afforably priced, have a large set of features, and are very fast on the support ticket turnaround time. A "Linode" is virtual machine you purchase (their terminology).
Linode's cloud-based infrastructure supports provisioning and deprovisioning "Linodes" on the fly. This means if you need a machine to play around with for an hour/day/week/month/year you pay for just what you use.
Linode supports what are called StackScripts which allow you to automate the process by which you can provision a server. I don't know the details but AFAIk you can specify the OS, disk layout, swap in config files, etc.
Linode also has an extensive API for billing, provisioning etc.
Linode also support load balancing in the form of a NodeBalancer.
These four features linked together can allow you to setup something like the following:
You have say a Linode for Web "stuff" such as Apache/PHP and a Linode for MySQL. If you have everything set up correctly you could have scripts that monitor the resource usage on your machines and automatically purchase, provision, boot, and add it to your MySQL cluster or NodeBalancer automatically. This means that if you get a huge spike in traffic (say you're slashdotted) you'll automatically scale to whatever you need to meet the traffic/processing/bandwidth/whatever requirements. You would have a MySQL cluster replicating back and forth keeping however many MySQL servers in sync, then you'd have a bunch of web servers balancing the PHP load.
Linode also provides quite a bit of redundancy as far as IP failover, as well as bandwidth pooling, IPv6, etc. I'd also like to say I'm in no way affiliated with Linode, just a happy customer.