Python や Ruby の Windows 向けランタイムに含まれている pythonw.exe や rubyw.exe に関して、毎回悩むので PE ヘッダを調べて違いを確認しました。ちなみに w 無し版は実行した時にコンソールが表示されますが、w 有り版はコンソールが表示されません。
とりあえず dumpbin を使ってヘッダーをダンプします。
dumpbin python.exe /headers
それぞれの実行ファイルに対して dumpbin でヘッダーをダンプした結果から、重要な部分だけ引っ張ってきました。結局のところは異なるのは subsystem 部分だけです。
python.exe
OPTIONAL HEADER VALUES
5.00 operating system version
0.00 image version
5.00 subsystem version
0 Win32 version
A000 size of image
400 size of headers
E816 checksum
3 subsystem (Windows CUI)
8000 DLL characteristics
Terminal Server Aware
pythonw.exe
OPTIONAL HEADER VALUES
5.00 operating system version
0.00 image version
5.00 subsystem version
0 Win32 version
A000 size of image
400 size of headers
BD3E checksum
2 subsystem (Windows GUI)
8000 DLL characteristics
Terminal Server Aware
ruby.exe
OPTIONAL HEADER VALUES
4.00 operating system version
1.00 image version
4.00 subsystem version
0 Win32 version
19000 size of image
600 size of headers
2092F checksum
3 subsystem (Windows CUI)
0 DLL characteristics
rubyw.exe
OPTIONAL HEADER VALUES
4.00 operating system version
1.00 image version
4.00 subsystem version
0 Win32 version
19000 size of image
600 size of headers
17A7F checksum
2 subsystem (Windows GUI)
0 DLL characteristicsw 無しは subsystem が 3、w 有りは subsystem が 2 になります。単純にコンソール向けなのか、Windows 向けなのかという話です。
MSDN によるとエントリポイントが main だとコンソール向け、WinMain だと Windows 向けになるとも書いてますね。基本的な Win32 の知識が必要な部分です。
Visual Studio のリンカー設定からサブシステムを変更可能です。

ちなみに Win32 プロジェクトを作るときに選択できます。

そして、それぞれの使いどころなんですが、ぶっちゃけどっちでもいいです。
Process.Start 時にコンソールを表示しないというオプションもあるので、それを使えば w 無し版でもコンソールを表示せずに実行できます。IIS の CGI / FastCGI で使う場合でも、どっちでも良さそうです。
どちらでも良いという結論は微妙な感じなので、CGI / FastCGI など Web 向けに使う場合には他の環境と合わせるために w 無し版を使う方向でいいと思いました。*1
*1:本当にどっちでもいい。