Caching is one of the first tools used to scale web sites. Your mileage is definitely going to vary depending on your circumstances (shared hosting vs VPS, number of course, amount of RAM, if MySQL is on same or different server, etc), but with caching you’ll eliminate most database calls (after the page is cached the first time) and basically be serving static HTML, so PHP won’t have to do any processing. In some cases I’ve had better luck caching DB queries (using DB Cache Reloaded) than with the normal caching plugins like W3 Total Cache or WP Super Cache. I normally don’t cache unless I have to (and with shared hosts, I often have to). A default WP theme with no plugins shouldn’t give you to many DB queries, but themes and plugins can up the number considerably, especially if the theme or plugin is written poorly (I say that because I had a premium theme that did 100+ writes with every page request due to the theme author using the wrong hook in the theme, and the theme reinitialized itself with every page call). It could be many things, but slow queries will really cause CPU issues and bog your server down (which could be caused by missing indexes in your tables).