The cache channel service should be shared by the deployer (which sends invalidation messages) and the web applications (which need to be informed of invalidations). So the deployer and the web applications have a shared interest in the content items that are being published.
The cleanest design for a scale-out is to ensure that there's no overlap of interests. So if you have two entirely independent web sites, each one is in its own publication, has its own publication target, deployer, CCS and web application. But this example is simple enough that you could actually share a deployer and CCS, as the publication ID would effectively partition the items.
In a more real-world scenario, you have a staging and a live site. Each deals with the same content, but the "published" state can be different in each. So a given item might be published at one version in the live site and at a different version in staging. Obviously, you don't want to have it so that publishing in staging invalidates the item in live, or vice versa, so these applications need a separate deployer and a separate CCS.
There's no reason why the CCS needs to be on the same server. If you need to run two on the same server, you need to control the port number. To do this in 2013, see this answer and for an approach to doing the same thing in Web 8, see this answer.