Once the USR2 signal is received the master process forks, the child process inherits the parents file descriptors including listen().
One process stops accepting connections creating a queue in the kernel. The new process takes over and starts accepting connections.
You can follow the trail by searching for ngx_exec_new_binary in the nginx repo.
Correct but to clarify, only the master process binds to the ports. The master process creates socketpairs to the workers for interprocess communication. The workers accept connections over the shared socket.
You can follow the trail by searching for ngx_exec_new_binary in the nginx repo.