
Bueno, no me caracteriso por ser el más explicito de los que responden (como bravenap o daz..xyz..

no recuerdo como es), pero ahí te va:
La variables de session, efectivamente necesitan las cookies en el cliente para tener un registro de que variable le pertenece a que cliente, las variables de session, al igual que las de aplicación, se conservan en la memoria del servidor y el límite son los recursos del servidor. Pero tienen la principal ventaja que estan disponibles en cualquier página
del mismo sitio.
Los campos ocultos son simples campos de formulario, pero que no se ven (

) , y tienen exactamente el mismo comportamiento, es decir, si los pasas por GET solo puedes mandar hasta 2083 (más o menos) caracteres (en browsers 4 en adelante) y no hay límite (creo) si los pasas por POST. Tienen como principal limitante el hecho que los tienes que pasar menualmente entre página y página.
Brevemente es la respuesta que ofrezco.
Saludos