Yes socket.io announces to all clients, it does this by using redis pubsub. So if you have more than one nodebb instance it is advised to setup redis.
It's a little difficult to explain, but at a high level, we're a single page app, which means when you click on an anchor, we request the JSON for the new page, render the html on the user browser, empty everything in #content, and inject it into #content. The overlay is a transition that makes this process a little smoother.
We use a templating engine called Benchpress to render templates on both server and client-side.