ICM is the Web server used by the ABAP and J2EE application servers. They are part of a single instance of the application server and forward requests only to the work processes of that instance. ICM cannot route requests another system.
Web Dispatcher is a load balancer and reverse proxy. It sits typically in front of multiple instances of one system and possibly in front of multiple systems. It can perform request routing based on rules.
And then there is the internal HANA Web Dispatcher. It is part of a single HANA instance and routs requests only to the XS server of that instance.