Presentacion

¿Cuál es la diferencia entre getch() y fflush()?
Esta respuesta aplica para quienes se hayan encontrado en la red, ejemplos usando getch() y fflush(); estos no cumplen con ser código portable y solo funcionan para el sistema operativo Windows.
Todo código fuente que no es portable hay que evitar usarlo.

Lo que sigue es solo para responder a la pregunta y no te recomiendo leerlo, a menos que tengas ya que usar forzosamente getch() o fflush() en un programa.

getch() toma un caracter a la vez, y si el búfer está vacío se detiene a esperar a que el usuario teclee algo; no requiere que presiones la tecla "entrar" para tomar el caracter de la tecla que presiones, toma el caracter en cuanto presiones una tecla y continúa el programa sin necesitar que presiones "entrar".

fflush() toma todos los caracteres que se encuentren en el búfer, si es que los hay; si el búfer está vacío, fflush() hace nada, y no se detiene a esperar que a teclees algo; sirve pues para limpiar el búfer de teclado, previo a que realices una entrada de datos en C/C++.