Partendo dal caso più semplice, se si tratta di semplici pagine html, (senza php o simili) il server (oppure il tuo computer, se lavori in locale) ha le diverse pagine salvate nella memoria; index.html, about.html, lavori.html etc.
Le voci nella barra di navigazione sono semplicemente dei link (con il tag <a>) che caricano la pagina interessata. Questo può andare bene se si tratta di un sito con poche pagine statiche, ma non è praticabile su larga scala: se devi cambiare il logo nell'header, oppure una scritta nel footer, devi modificare una pagina per volta!
Per questo si può usare per esempio il php, che permette al server di costruire la pagina: si divide la pagina in blocchi: per esempio "header.php" "forum.php" "offerte-lavoro.php" "footer.php". Nel nostro index.php indicheremo "includi header.php; includi forum.php; includi footer.php;".
A questo punto cliccare "forum" nella navigazione darà l'istruzione al server di sostituire il blocco "home.php" con "forum.php". A sua volta "forum.php" conterrà delle istruzioni per interagire con il database e generare i vari thread.
È un'enorme semplificazione ma il meccanismo di base è questo.