E provando a non fare più volte ciò che puoi fare una volta sola?

codice:
$res=mysql_query("SELECT DISTINCT nomeArte FROM cantante ORDER BY nomeArte ASC",$con);
        while($Autors=mysql_fetch_array($res)){
            $length=count($res);
            for($n=0;$n<$length;$n++){ //genera tutte le opzioni
                $options.="<option value='$Autors[$n]'>$Autors[$n]</option>";
            }
        }

for($i=1;$i<=$_POST['numeroComponenti'];$i++){ // esempio 5
    echo"Cantante $i
        <form action='addCantanti2.php' method='post'>
        <select name='scelta_[$i]'>"; //1,2,3,4,5
echo $options;
        echo"</select>
            <input type='hidden' name='nomeGruppo' value='$_POST[nomegruppo]'></input>
            <input type='hidden' name='numCant' value='$_POST[$i]'></input>
            </form><br><br>";
}
Quanto al tuo quesito, nel codice php in addCantanti2.php riceverai all'interno di $_POST i valori che l'utente ha selezionato nelle varie caselle select: $_POST["scelta_1"] conterrà la prima, e così via.

Ricorda che non è una buona abitudine utilizzare per le inlut o select dellee form dei nomi solo numerici; è una sintassi scorretta dal punto di vista dell'HTML, e potresti andare incontro a problemi quando devi, come è questo il caso ricevere quasti valori via $_POST.