Como tu dices, mediante $row=mysql_fetch_array($consulta) puedes acceder luego a los campos mediante $row["campo1"] ya que esta funcion forma una matriz asociativa (se puede acceder mediante sus indices asociativos (nombres de los campos) o sus indices numericos (posiciones de los campos)).
Con $row=mysql_fetch_row($consulta) accederás a los campos únicamente por su indice numérico (posición) por ejemplo $row[0], y por último, con mysql_fetch_object lo devuelto ya no es una matriz, sino un objeto, al cual para acceder a sus campos lo haces unicamente mediante sus indices asociativos.
Personalmente, la experiencia me ha hecho usar siempre mysql_fetch_row debido a que cuando tienes una gran cantidad de campos, esta resulta ser algo mas rápida que sus compañeras. La página de PHP dice:
Cita: La función mysql_fetch_array() no es significativemente mas lenta que mysql_fetch_row(), sin embargo tiene un valor añadido importante.
Y es bastante cierto ese párrafo, lo podrás comprobar tu mismo.
Mas info en :
php.net/mysql_fetch_array
php.net/mysql_fetch_row
php.net/mysql_fetch_object
En fin, espero haber aclarado tus dudas.
Saludos.