Caching plugins + mod_pagespeed = overkill?

It is hard to say whether it is overkill or not.

Generally there are several type of caches need to be implemented, Opcache (for PHP codes), Query cache (for Database access), Object cache (for community type of website or shared server where content are constantly updated) and Page cache (for static content such as HTML). Until you understand all the differences and what exactly a plugin is doing, it hard to generalise to say it is overkill. Having said that, most of the plugins are implementing various types of caches that can be done with simple function or through services at the server level.

Personally I don’t use a plugin for cache and implementing everything as ‘native’ as possible, I wrote a blog about Implementing various cache on a Nginx WordPress server (in fact on a credit-size server that run my website). It may not applicable to LAMP solution, but I talked about the basic of various type of caches.