Mah... forse ero fulminato ieri sera... ho cancellato tutti i file da server e li ho ricaricati e in effetti funziona correttamente...
Spinto dall'entusiasmo ho provato a modificare il codice adattando un ciclo while preso da un altro esempio per fare in modo che il programa inserisca prima dei campi inseriti dall'utente, il campo "ID" in maniera progressiva:

es: ID|NOME|EMAIL|CITTA
1|MARCO|MROSSI@ABC.IT|MILANO

codice:
<?php
$textfile = fopen("clientiMailingList.txt","a");
while ($rigafile = fgets($textfile,1024)) {
$campiriga = explode("|", $rigafile);
$id = $campiriga[0];
$id = $id + 1;
}

$varnome = $_POST["nome"];
$varemail = $_POST["email"];
$varcitta = $_POST["citta"];
$datiform = $id . "|" . $varnome . "|" . $varcitta. "|" . $varemail . "\n";
fwrite($textfile, $datiform);
echo "Grazie per esserti registrato"
?>
Ho dovuto inizializzare il file di testo con una prima riga di ID = 1 manualmente per dare un senso alla prima parte del codice, ma ciononostante, il campo ID viene creato nel file txt ma resta vuoto; se invece sposto la riga $id = $id + 1 subito dopo la parentesi graffa il campo ID viene settato ed inserito sempre = 1 in ogni riga inserita dall'utente...
Mi servirebbe un debugger per vedere riga dopo riga come cambia il valore delle variabili... ne esistono per il php?