ヘッダファイルでexternつきのプロトタイプ宣言をして、
関数の実体のソースファイルでもそのヘッダをインクルードする目的は
ヘッダでのプロトタイプ宣言と実体の定義内容とが一致してることを
コンパイル時にコンパイラにチェックしてもらうためだよ。

やらなくてもコンパイルはできるしプログラムは動作するけど、
やっといた方が間違いを見つけやすいので好ましい。

Javaだとリンク段階でチェックされるのかな?