Hola,
Si sabes como funcionan ambos, te saldra naturalmente cuando usar uno u otro. El while es mas sencillo, simplemente es un bucle mientras se cumpla la condicion. El for incluye una accion previa al bucle, la condicion que mientras sea cierta se ejecuta el bucle, y una accion que se ejecuta al final de cada bucle (no al principio de cada bucle, como puso anarko).
Esta claro que no usaras un for tal que
Código PHP:
for(;$row=mysql_fetch_assoc();)
Es decir, sin accion previa y sin accion repetitiva.
Saludos.