Non esiste una regola ma di solito si sceglie il for quando c'è un "indice" o un contatore da far crescere o decresce all'interno di un certo intervallo.
Ad esempio se devi "ciclare" su un array con un indice i che va da 0 a max (escluso) ti verrà più naturale scrivere
for(i=0;i<max;i++)
{
//...
}
anziché qualcosa del genere
i=0;
while( i<max )
{
//...
i++;
}