Caching of pages and regions has been around since APEX 3.0 and my personal opinion is that it is still an underrated and less-used feature. I haven’t found complex caching systems in APEX applications I have worked with and that’s probably because most people don’t know how APEX caching works and they prefer implementing other caching solutions.
Why would you use caching? Because it greatly improves performance. APEX renders each HTML page from the database and this could prove slow, when getting hit really hard by lots of users. To avoid that, you can cache pages/regions, so that HTML pages are retrieved directly from the APEX cache (still stored in the database, but as HTML files, not as metadata), but without re-generating the pages/regions altogether.
We are using caching for www.apexninjas.com and it works like a charm. But this is just some simple caching, for the regions we know that do not change so often: