TL; DR - On MageStack we use Varnish, Redis (cache), Redis (sessions) and Eaccelerator/Zend OPCache (depending on PHP version)
You've already got most of it understood.
The cache backend, session store, opcode cache, full page cached and reverse proxy cache are all completely different.
You can use different technologies for all and you can use them ALL ...
I Would go for Redis + APC with Varnish on top.
'Why Redis' you ask? Read this excellent SO answer. Redis basically replaces Magento's standard file-based caching system. Since Redis is faster it'll give you some improvement on speed.
Varnish actually doesn't have that much to do with the inner workings. It's put on top and caches static content so it ...
Hesitant to comment on this as I have no proof to provide you.
Given that you say you are currently using APC with your PHP , i sugest you disable the magento compilation all together.
In my tests Enabling the magento compilation actually slows performance when you are already using APC or another accelerator.
Take page speed measurements before ...
Apparently there are some memory issues with the later versions of APC (https://stackoverflow.com/questions/9611676/is-apc-compatible-with-php-5-4-or-php-5-5). I don't know if this is actually affecting you as I've not seen this behavior. In whatever event, the best option would be to upgrade to the opcache as Rob stated.
My sys admin enabled fully core dumps and found that APC was throwing an error.
Apparently APC and PHP 5.4.5 has some kind of bug:
After removing APC off the server completely I confirmed that the error has stopped.
I'm not one to quickly discredit older software, in regards to APC and Apache. Everyone always likes new shiney things. APC is still widely used. even with PHP coming with its on opcode cache, Imo. With that said, remember APC has two different caches, one for web and one for shell. So if you are trying to purge via CLI it's not clearing both. Inchoo has a ...
Have a read of this, https://magento.stackexchange.com/a/48017/361
If you still wanted to use APC as a cache store, then you don't need to define it per store view. Like the DB credentials, they are set globally, once.
APC starts with PHP 5.3 to have issues, which long time were not fully fixed, and maybe still some rare occurring Bugs are still there.
With PHP 5.4, APC is nearly useless. There are a lot of companies, who skipped this version completely.
Seeing that PHP 5.5 comes with an own opcode cache leads to a state, where APC will never get fixed to be usable again.