C++ je dobar ako ćeš se baviti ikakvim programiranjem koje zavisi od mašine, ili gde su performanse kritične, ili treba da radi na raznim operativnim sistemima, ili treba da radi na Windowsu bez .NET frameworka, ili ako hoćeš da se osećaš kao h4x0r.
C# je dobar za praktično sve vrste desktop programa, primene gde performanse nisu kritične, i Windows programiranje. Po sintaksi liči na mešavinu C++-a i Jave, i generalno prilično je lep "na oko". A i na stvaranju je učestvovao čovek koji je otac Delphija (objektno-orijentisanog Paskala), verovatno najboljeg jezika i okruženja za programiranje desktop programa ikad. Uglavnom, C# je nešto najbolje što je izašlo iz Microsofta.
Preporučujem C#. Lagan, temeljna dokumentacija, gomila primera na netu itd. Neko će sigurno reći da radiš Javu ali nemoj. Java smrdi :)
Dakle treba ti Visual C# 2005 Express Edition koji je besplatan, i dobar je za 90% primena. Postoje komercijalne verzije koje se plaćaju al to ti sad ne treba (razlike vidi ovde). Trebaće ti i Service Pack 1 za Visual C# 2005, a ako radiš sa SQL-om, onda i SQL server. Za izvršavanje programa pisanog u Visual C# 2005 na kompjuteru mora biti instaliran .NET Framework 2.0 ili noviji.
Od knjiga korisno je imati Microsoftovu "Visual C# 2005 Step by Step", ne znam koliko košta u prodaji ali je možeš dobiti džabe ako se prijaviš za Microsoftovo rukopisanije.