1) ...

... no tendría porque haber ese comportamiento... ¿no tienes un thread abierto con ese tema

??; si eres tú, se mencionó sería bueno mostrarás exáctamente lo que haces... si no eres tú... serían dos los casos

, habria que investigarlo bien

.
2)

... no entendí, pero los datos de las sesiones se guardan en el servidor. No empleas ni cookies ni la URI para pasarlos.
4) Claro... todo es cuestión de valuar las cosas: tanto para tí de qué tanto depender de las cookies como del usuario el ver sí le conviene aceptarlas (hablando con la realidad, son la minoria quienes las tienen desactivadas).
5) El límite es de 250-255 carácteres (mas menos, no recuerdo bien

).... el que represente un agujero de seguridad dependerá de los datos que pases y de tu programación. Puedes aceptar valores de "var" específicos, incluso restringir algunos ó como lo requieras. Puedes hacer que si el usuario cambia el valor de la variable te mande a una página específica (404, index...) si no se encuentra ese valor, esto no tiene por qué representar un problema para tí salvo quieras verdaderamente evitar esa manipulación por cuestiones de... ... .. ¿por qué?

. El paso de vaores por URI se usa básicamente para consultas y asignarle valores que son obtenidos por JavaScript, nada extenso, nada "super secreto".
6) ... tendrás que hacer eso ó emplear JavaScript; con un botón/enlace que te regrese una página según el historial, esto conservará los datos del formulario.
Edito:

Ahora entiendo el punto 2; sí, tendrías que destruirlas.
He probado el refresh y no tube problema: 1.php
Código PHP:
<?php
session_start();
echo "<a href=\"2.php\">Enlace</a><br>";
echo session_id(); // se conserva
?>
2.php
Código PHP:
<?php
session_start();
?>
<html><head>
<meta http-equiv="Refresh" content="5, 1.php">
</head><body>
<?php
echo session_id(); // se conserva
?>
</body></html>