Credo che dipenda dal fatto che "campo_richiesto" sia di tipo checkbox: Se non è spuntato non viene inviato, questo ti porta ad avere la dimensione di $richiesto variabile e "disallineato" con il resto delle variabili.
Ad esempio, se selezioni solo il richiesto di telefono, su 2.php avrai
$richiesto = array([0] => 1)
Che, come puoi immaginare, verrà considerato spuntato per "nome" (tra l'altro dovresti avere anche dei errori sugli indici per $i>0)
Ora, le soluzioni che mi vengono in mente sono:
1, assegni una chiave a richiesto:
nome:
<input type="checkbox" name="richiesto[0]" ...>
cognome:
<input type="checkbox" name="richiesto[1]" ...>
telefono:
<input type="checkbox" name="richiesto[2]" ...>
e su 2.php ne verifichi l'esistenza: if(isset($richiesto[$i]))
2, usi javascript per passare l'array completo, contente anche i checkbox non spuntati