1 gry tworzy się głównie w C++, oparciu o sztuczki magiczne (matematyczne) - różnego rodzaju sztuczki z optymalizacją, fizyką itd
ale do mniejszych produktów wystarczy c#, w unity3d
jest wystarczający i jest ok
2 zależy co kto woli, w c++ masz więcej władzy i kontroli
w c# sporo dzieje się automatycznie i działa to jak widać dobrze
w c++ masz na głowie więcej rzeczy, ale to ty decydujesz jak co ma działać
jeśli już nauczysz się panować nad tym językiem, efekty będą lepsze
no i też dochodzi fakt że c++ ma elementy, które nie występują w innych językach
3 jeśli chodzi o ogólnie aplikacje, to zdecydowanie c#, głównie ze względu na asp.net
mało które firmy robią aplikacje okienkowe w c#, pewnie podobnie wygląda to z c++
w środowisku gier, jeśli nie celujesz w małe firmy tworzące w unity3d, to przeważa c++ -> wszystkie duże firmy typu cd project, ubisoft, ea i inne tworzą swoje silniki do gier w c++, bo jest po prostu bardziej wydajny, jeśli tak jak wspomniałem wcześniej, umiesz wykorzystać tą przewagę
wiele osób uczących się c++ zatrzymuje się na dość niskim poziomie, wybrali język bo niby takie duże możliwości i jest taki aaa super... ale w rzeczywistości nie używają nic ponad absolutne podstawy na poziomie osoby która skończyła technikum
fajną opcją jest zrobienie rozeznania i nauczenie się podstaw wielu języków, żeby wiedzieć jak to wygląda u innych
przykładowo js, java, python, c#, c, c++, php
przy okazji nauczysz się więcej elementów, bo każdy język stawia na coś innego
i każdy poradnik stawia na coś innego
po pół roku takiej zabawy polecam zagłębienie się w jeden język