I would take the caching aspect out of the loop, unless you really think you need it. It's usually the last step in deployment before going live. And in all honesty, unless you have a lot of RAM available or fast disks, Varnish introduces a whole level of complexity and tends to be a common break point. I've only ever implemented it on one very high traffic server. But ultimately, I got even better results from using Cloudflare's infrastructure.
The best bang-for-your-buck combo on CWP is with Nginx (least troublesome to configure and manage, far better performance than Apache). Varnish is only if you absolutely need to milk every last bit of performance out of your existing server.