"Where" depends on how you handle it. MySQL does some caching internally. Memcache stores data on the server. You might cache dynamically generated html markup in .txt files, or session-specific data in your $_SESSION.
I was going to link to the Wikipedia page, but it seems uncharacteristically akward and helpless.
Basically, a "cache" is just an organized way to save data you plan on using again later, thereby saving time by only retrieving/ preparing it once and using it several (or many) times.