どういう時に作るか
* 自分の作った関数を他人に使ってもらいたい。
* その関数が、別ファイルの関数から呼ばれている。
* その関数が、前方参照されている
全ての関数について プロトタイプ宣言を作ってしまって構わないと思います。
どこに作るか
* 関連する関数のプロトタイプ宣言は、ヘッダファイルにまとめておく。
ただし、ファイルの外に見せる関数に限ります。 ファイル内だけで使うような関数は static にして、 ヘッダファイルにプロトタイプ宣言はのせません。 又、 "だれが見る関数か" を考慮して ヘッダファイルを分割しておくとよいでしょう。
だれが作るか
* 関数の作成者が作成し、メンテナンスする
他人の作った関数について、 そのプロトタイプ宣言を自分で書くようなことはやめましょう。
どのように使うか
* その関数を使用するソースファイルで #include する。
staticな関数を除き、 ソースファイル中に直接プロトタイプ宣言を書くことはやめましょう。