Правильно ли я понимаю принцип работы cluster в NodeJS?
cluster.isWorker равен в ноде !cluster.isMaster 
об этом прямо сказано в доках (it is the negation of cluster.isMaster) поэтому оборачивать не обязательно раз уже есть if(cluster.isMaster){}else
child процессы понимают что они не мастера по переменной process.env.NODE_UNIQUE_ID если определена то я worker.
Все это можно посмотреть напрямую в коде cluster тут https://github.com/joyent/node/blob/master/lib/clu...
см. function createWorkerProcess(id, env)
Создать кластер в nodejs можно только для isMaster процесса и после if проверки породить дочерний процесс на каждом ядре сервера и количество дочерних процессов должно соответствовать количеству ядер. И лучше создавать кластер в index.js который будет являться entry point (npm start должен запускать node index.js), а отдельно уже создавать server.js с кодом создания сервера.
Пример кода entry point: const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Leader ${process.pid} is running`);

  // Fork workers.
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`worker ${worker.process.pid} died`);
  });
} else {
  require('./server.js');

  console.log(`Worker ${process.pid} started`);
}