Para comprender como funciona debemos saber lo que tenemos
primero, como te comente dentro de tu for($i... tienes un echo con un input
este input creara de 1 a N el texto "<input type='text' name='p1' size='50'>" lo cual no seria muy útil ya que todos se llaman p1.
lo que te explique es que podemos reemplazar ese p1 con un p[]
el cual creara (una vez submit) tantas "p" como se hayan indicado, dejándolas como p[0], p[1], p[n].
así, luego de obtenerlas con $_POST['p'] en cada uno de los valores tendrías como ej $_POST['p'][0], $_POST['p'][1], etc.
dependiendo de cuantos hayas puesto.
lo que hacemos con foreach, como su nombre lo dice "para cada" $_POST['p'] hacer X codigo.
quedaria algo como
Código:
foreach ($_POST['p'] as $pregunta) {
echo $pregunta;
// lo que se necesite...
}
lo que en pocas palabras hace es POR CADA $_POST['p'] es decir por cada valor de "P" (como los P[0],P[1]...) hace X proceso, como el echo y el comentario.
Se que con esto no respondo realmente tus preguntas, pero creo que es mejor enseñar y comprender a dar el código.
Espero que te sea de ayuda.
Saludos.
pd: aprende javascript con jQuery (jQuery es una class de javascript muy poderosa, MUY PODEROSA), es MUY SIMPLE de usar y MUY SIMPLE de aprender, es completamente recomendable y las cosas quedan mucho mas lindas.