Per la stampa ci sono degli attributi specifici nei CSS, solo che non credo siano (ancora) riconosciuti dai browser.

Per le scritte in testa e calce della pagina, da XTML/CSS/JS non puoi farci nulla: sono gestite direttamente dal browser. Comunque in ogni browser puoi decidere se stamparle o meno e la posizione.

Per la separazione delle pagine, ci sono gli pseudo-elementi :before e :after; oppure ci sarebbero gli attributi break-before e break-after (mi pare), solo che non sono supportati (o lo sono solo da qualche browser).