ANSI規格では、mainの中で使う限りにおいては、returnとexitに関しては違いがありません。 関数の中で使った場合、returnはその関数を呼び出した関数に対して値を返すのに対し、exitはそのプログラムを呼び出した他のプログラム(OSや他のプロセス、サービスなど)に対して値を返します。 これらを念頭において使い分ければいいと思います。 私の場合は、exitはmainと各関数でプログラムの仕様上エラーに対処できない場合にプログラムを強制終了したい場所で使います。 それ以外の場所ではreturnを使います。