Tieni conto che $tabella non è niente, in quanto viene popolato dal primo loop ma quando esce non c'è più niente.
Forse volevi popolare $tabella, allora nel primo loop devi usare $tabella con un indice, ad esempio $tabella[$numero] oppure $tabella[], in questi casi il secondo loop diventa così:

$fp=fopen("materiali2.txt", "w"); foreach ($tabella AS $indice => $tab){ list($ID,$nome,$numero)= $tab; fputs($fp, $ID . "\t" . $nome . "\t" . $numero . "\n"); } fclose($fp);

Tanto per informazione, invece che:
$numero=+1;
puoi scrivere:
$numero++;