Pues pasas por ejemplo una variable por un URL, o bien el número de página, que es lo mas habitual, o el número de registro desde cual empezar a mostrar resultados, que no es tan habitual, pero facilita levemente el trabajo.
En el for(), o el bucle que quieras usar, lo haces tantas veces como páginas existan (si muestras 10 registros por página, y hay 99 registros, hay 9 páginas), y ya el resto es fácil. Si divides los registros (99) entre la cantidad a mostrar por página (10) [9.9] y aplicas ceil() [9], te salen las páginas que tienes por esa consulta.
Espero haberme explicado bien.
Saludos.