
... Generar y recoger son cosas distintas... y totalmente independientes...
Según entendí (aunque no entiendo el objetivo de todo esto...) ya tenías resuelto el cómo imprimir tus listbox (siguen siendo listbox si son multiple??

) y como resultado tenías:
Código HTML:
<select name="personas1[]" multiple>
<option value="dni">Nombre Apellidos</option>
......
</select>
<select name="personas2[]" multiple>
<option value="dni">Nombre Apellidos</option>
......
</select>
.....
<select name="personasN[]" multiple>
<option value="dni">Nombre Apellidos</option>
......
</select>
Entonces, dices, para recojer necesitas algo como:
Código PHP:
$_POST['personasN']
Lo cuál es cierto... pero quieres igual generar ese "personasN" dinámicamente.. e intentaste hacer:
Código PHP:
$_POST['personas'.$numero];
// donde 'N' es $numero
... "la idea" pareciera estar bien, pero yo te digo que la forma no, que necesitas hacer una "pre-concatenación" de esta manera:
Código PHP:
$indice="personas".$numero; // Donde 'N' es $numero
// igual sería válido $indice="personas$numero";
// Entonces $indice será igual a "personasN" y podrás usarlo como índice (key) de tu matríz
$_POST["$indice"]; // entonces tendrías el $_POST["personasN"] que buscas...
....

PD: El error pareciera es por las comillas.... tan solo vé cómo ilumina el código .. haces un echo, supongo (no lo muestras).