For example, I have a Solr Cloud with 4 instances (s1, s2, s3 and s4). I created a collection with one shard and two replicas called 'abc' spreads over on s1 and s2.
When I submit a query to collection 'abc' on either s3 or s4, will Solr Cloud route my request to s1 or s2 automatically?
yes, you can submit your queries to any node in solrlcoud, no need to worry about that.
But, if you are using SolrJ, and not just plain Http, if you use CloudSolrClient it will know where it needs to send the query on the client side, so it will require fewer network traffic inside Solrlcoud.
There are no similar facilities for other languages, so you can use this only from JVM based languages.