You'll often end up having PhantomJS binaries connected via WebDriver to your testing framework, possibly using client/server especially if you want your test running with something else than Java. This mean an overhead in terms or maintenance and performance, but still usually lighter than running a full browser (like Chrome, Firefox, IE).
There are times where you don't want to open up a browser for screencaps, that is where CasperJS comes to use, it can render the page using its own rendering engine and take and save a screenshot for you, all via the commandline
Can execute arbitrary javascript or load external JS into the page being tested. This feature is possible due to the presence of a rendering engine, and helps you see the effects of any client side scripting during your tests.
QtWebKit is the rendering engine used by CasperJS. Keep in mind this is not the same rendering engine as Chrome; hence, if you want to be 100% sure of the results, you must run a Webkit browser (such as Chrome) yourself.
As its JavaScript and DOM engine are mostly "just good enough" and because by design it'll report all errors and stop there, many complex sites will not load properly through Zombie.js.