When we start one of our Selenium tests, then a request is sent to the Hub.
The Hub checks all the Nodes which are registered, for a System, that matches the desired Capabilities for the started testcase (for example, Chrome).
With a match, the Hub sends the Selense to the Node which is communicating with the browser and the test will be executed step by step. If there is no free slot on the matched Node, then the Hub will wait and try again until the timeout is reached.
In our case the tests are structured in a way, so that it use specific URLs to reach different application systems depends where the tests will run. That means, when we start the tests local on our own developer machine, then it works with the local code and application. When we start it on the grid instead, then the Version on the Testsystem will be tested.