#2. Hooking into a CDN is very easy to do and can allow your web servers to offload the serving of static files. As an easy way of doing cache-busting set up a global version variable in your code that gets injected into each static url that's generated (so a request for cdn.mygengo.com/images/29384/bar.jpg would be rewritten to look for /images/bar.jpg on your web heads if and only if the cdn'd cache had either expired or the unique # had changed in the request).
#3 Set up some sort of perfomance monitoring if you haven't already. Almost every startups #1 pain point is the db server, specifically queries. It's great that you've been able to see such a vast improvement through adding indexes / cleaning up some queries, but as long as your data is growing you will need to continue to keep on top of your query logs as their impact footprint will change as the size of your data does. Since you're on AWS, enabling Cloudwatch should be very easy and provides the basics. You can then move onto implementing Nagios/Munin or look to something like Cloudwatch/ServerDensity for an in-the-cloud solution.
You also didn't mention anything about having a K/V system like Memcache or Redis (yes @antirez we all know Redis rocks and how dare I place it after Memcache ;) which can really take the load off your db servers.
Best of luck with continued growth.