You shouldn't switch to a CDN too early. Read the update on hacked.com's experience with a CDN. If you don't have millions of visitors per day and your visitors are not distributed across a wide geography, then a CDN might slow your site down.
Instead, it would be wise to plan for using a CDN at some time in the future when designing your site, but not implementing it until needed.
When will the CND be needed: When two factors collide. Firstly that you tests show that the majority of users will see a speed improvement and secondly when it is financially viable for your site.
What to put on the CDN? Everything that doesn't change and is static. That means your database and server side code stays on your original site but all the other stuff like css, javascripts, images, videos and so on, go on the CDN. The CDN should also cache copies of your dynamic pages though how aggressive that cache should be depends on your site. Many CDN systems will automatically grab what contents they need without you doing to much. For example Google's new pagespeed CDN just needs you to point a cname in your dns and google will automatically pull the content as it needs it.