Чтобы в том случае, если к моменту выполнения make изменился main.c ИЛИ hello.c, каждый из них был бы заново откомпилирован. Если этого не сделать - есть риск, что исходник лежит более новый, а в бинарь будет включен более старый обьектный модуль.
DVoropaev, что бы make знал что (пере)собирать. Для этого он анализирует только цели и зависимости, его не волнует что написано внутри рецепта (команды).
Попробуйте убрать зависимости, поменять исходники и запустить make