1. Il C++ standard non include nulla che riguardi la grafica, qualunque strumento per la GUI è in un certo senso proprietario.
"Visual C++" non vuol dire niente, è semplicemente il nome del pacchettone IDE+compilatore+un tot di librerie. Quando disegni un'interfaccia in VC++ di fatto stai usando due pezzi: il form designer (per poter disegnare il form graficamente) e un qualche toolkit (libreria) per la GUI. VC++ offre due form designer e tre librerie:
- il form designer "classico" genera dialog da inserire in file di risorse; si usa per creare finestre in applicazioni unmanaged (ovvero, native e scritte in C++ standard più qualche libreria). Le librerie che si impiegano usando i file di risorse sono le MFC (scritta in un C++ abominevole) o ATL (o la sua espansione WTL), o, se ti vuoi del male, direttamente le API di Windows. Tutte soluzioni non portabili, dato che MFC e ATL sono dei "thin wrapper" attorno alle API di Windows, che ovviamente sono platform-specific.
- il form designer di Windows Forms, che genera direttamente codice C++/CLI. Il problema qui è che usa la libreria Windows Forms, che è una libreria .NET, e di fatto per usarla non userai C++ standard, ma C++/CLI, un dialetto del C++ per permette di lavorare il .NET Framework (di fatto il backend del compilatore genererà codice intermedio per .NET e codice nativo se richiesto, patchati insieme tramite PInvoke). Personalmente ritengo estremamente stupido usare C++/CLI salvo in casi eccezionali, se si lavora con il .NET Framework tanto vale usare C#.
2. No. I toolkit nativi di VC++ sono strettamente relativi a Windows. Esiste un port funzionante di Windows Forms per Mono (una versione open source del .NET Framework), ma non mi risulta che esistano altri compilatori C++ oltre a quello Microsoft che siano in grado di gestire C++/CLI. Da questo punto di vista risulta molto meglio C# (linguaggio che Mono supporta tranquillamente, anche se, se l'obiettivo è fare GUI portabili, conviene usare altri toolkit grafici, come GTK#).
3. Le guide di C e C++ di questo sito non sono un granché...
In ogni caso, se vuoi creare applicazioni portabili ti conviene usare un toolkit grafico multipiattaforma come le wxWidgets o le Qt (entrambe opensource), magari usando un IDE che le supporti nativamente.
E in ogni caso non scarterei a priori C# (usando le GTK# se vuoi essere portabile), se vuoi sviluppare secondo una filosofia RAD è sicuramente più indicato.