Sì, per java ci vuole la VM, per .NET il framework; ma non mi sembrano grossi problemi.

C/C++ sono strumenti piu' "leggeri" (da questo punto di vista) ma dipende tutto da cosa devi fare ...

Il framework .NET da' dei vantaggi indiscutibili nella realizzazione dei programmi ... in C/C++, probabilmente, dovresti rifare da zero parte del codice che ti serve a meno di non usare delle librerie o dei componenti pronti, ma cosi' si ripropone il problema della distribuzione di tali librerie.

Un peer to peer lo puoi scrivere tranquillamente in C# come in C/C++ ...

Per programmare su windows in C++ esistono "tonnellate" di libri ...