If you're already using a decent CDN for your static content, the benefits of a separate static-content server sitting in front of your app will be pretty minimal unless you have a very low TTL on a substantial amount of your content. Keep that in mind first and foremost.
Varnish has a number of reported issues with memory usage. Some people have claimed that this is because Varnish will try to claim all the virtual memory on a host for itself in order to better serve content. Others have noted what appear to be serious and substantial memory leak problems with it, and these issues seem to keep cropping up. I'm not an authority, but the sheer number of people out there saying things like "I tried Varnish but I kept having to restart it once per day" makes me wary. Given that there's not a substantial performance difference over Nginx in most cases, I've avoided it in production so far, and Nginx hasn't left me wanting.
Though, if you're looking at Nginx, I'd consider removing Apache from the equation entirely. PHP runs quite nicely through an interface like FPM or FCGI (via spawn-fcgi) without having to get full-on reverse HTTP proxying involved.