Без cluster нода работает на 1 ядре, для масштабирования создаются новые процессы через cluster.fork(); Каждый из процессов может узнать, он главный или дочерний, через cluster.isMaster и cluster.isWorker. Между процессами можно передавать сообщения (события) и сокеты (дескрипторы сокетов). Таким образом, tcp или http сокеты принимаются главным процессом, а на обработку отправляются в один из дочерних. Это в двух словах, подробнее хорошо все написано в доках
https://nodejs.org/api/cluster.html