アプリケーションの作り方によります。
ケース1・DLLを使用している場合
汎用のプログラムを他からも使えるように、アプリケーション本体から切り離し、ダイナミック・リンク・ライブラリ(DLL)と言われる別ファイルにしておき、必要な時にアプリケーションから呼び出して使う、と言う作り方があります。
この時、DLLを正常にアプリケーションから呼び出せるようにする為、DLLをOSに登録しなければならないのですが、新たに登録したDLLがちゃんと使える状態になるのが「OSの再起動後から」と言うケースがあります。
このような作りになっている時に、再起動せずにアプリケーションを起動しようとすると、インストーラで登録したDLLの呼び出しに失敗し「DLLの呼び出しに失敗しました。インストールし直して下さい」とエラーが出る場合があります。
ケース2・OSが起動する時にのみ設定が変更される情報を利用する場合
アプリケーションが動作する上で必要な情報をOSに登録しておかないと、アプリケーションが正常に動かない、と言うような作りをしている時、それらの情報はインストーラーによって設定されます。
この時、インストーラーがOSに登録する情報の種類によっては「情報を登録してもすぐには反映されず、OSを起動した後に登録が反映される」と言う物があります。
なぜ、OSを起動した後じゃないと登録が反映されないのかと言うと「OSが動き出してから電源が切られるまで、大きさや個数が変化すると困ってしまう物」があるからです。そのような物の設定を変える場合は「次に起動する時は○○の値で起動して」と情報の登録だけ行い、ユーザーに再起動させる事で登録した情報を有効にします。
これらには、ハードウェアをコントロールするデバイスドライバも含まれます。
このような作りになっている時に、再起動せずにアプリケーションを起動しようとすると「初期化に失敗しました。起動出来ません」などのエラーでアプリケーションが動きません。
ケース3・常駐プログラムを利用している場合
ウィルス対策ソフトのように、OS起動中にずっと動いているプログラムが何かを監視している、と言うようなプログラムの場合、OSが起動する前に常駐プログラムを動かしておかなければならない事があります。
OSが起動する前に常駐プログラムを動かすには、当然、再起動が必要です。
どうしてOSが起動する前に常駐プログラムを動かす必要があるかと言うと、OSが起動してネットワーク接続等が有効になってから、その後で監視プログラムが動いたのでは手遅れになるからです。
ネットワーク接続等が有効になってから監視プログラムが動き出すのでは、監視が開始される直前はネットワーク接続に対し無防備になりウィルスの侵入を許してしまいます。
ケース4・OS付属のファイルをバージョンアップしないと動かない場合
アプリケーションによっては、OSのインターフェースのドライバをバージョンアップしないと動かない物があります。
例えば、ビデオカードの3D描画サポートをするDirect-Xのバージョンがある程度高くないと動かない、などです。
このようなケースでは、アプリケーションのインストーラが組み込み済みのドライバのバージョンをチェックし、動作に必要なバージョンに満たないか、動作に必要なバージョンのドライバが無かった場合、ドライバをインストールし直します。
当然、新しくインストールされ直したドライバはOSを再起動してから有効になるので、アプリケーションを動作させるのにも再起動が必要、と言う事になります。
このような作りになっている時に、再起動せずにアプリケーションを起動しようとすると「デバイスドライバのバージョンが違います」などのエラーでアプリケーションが動きません。
ここまで4つほどのケースを例示しましたが、再起動を必要とする理由は他にも沢山あります。
簡単に言うなら、
「アプリをインストールしたら、システムが中途半端に変更された状態になってるかも知れず、再起動しないと何が起きるか判らない。再起動さえすれば変更が正しく反映されてマトモな状態に戻る」
と言う事です。
「再起動が必要」と言われた時に再起動しないで居るのは「玄関ドアに鍵をかけて戸締りしたのに、鍵穴にキーを挿したまま出掛けてしまった」のと同じくらいに危険です。