Зачем нужен C#: где его используют и что на нём написать первым
C# - основной язык экосистемы .NET. На нём пишут серверные приложения, сервисы, десктопные программы, облачные функции и игры; выбор направления определяет библиотеки и инструменты, а не сам синтаксис.

C# и .NET - не одно и то же
C# задаёт синтаксис и правила языка. .NET предоставляет среду выполнения, базовые библиотеки, сборку, управление пакетами и инструменты. Код компилируется в промежуточное представление и выполняется средой .NET. Это позволяет использовать единый набор подходов в разных типах приложений.
Официальная спецификация называет C# универсальным, статически типизированным и объектно-ориентированным языком. На практике новичку важнее почувствовать пользу типов, коллекций, исключений, LINQ и async/await, чем заучить формулировку целиком.
Если нужна системная практика, сравните программы по python.

На Windows C# давно используют для бизнес-приложений и внутренних инструментов.
Для веб-API, внутренних систем или Unity C# часто даёт быстрый и удобный путь.
Прыжок сразу в огромную архитектуру с двадцатью пакетами выглядит солидно, но часто скрывает непонимание базового потока данных.
Где используют C#
ASP.NET Core применяют для веб-API, серверов и веб-приложений. .NET имеет инструменты для фоновых сервисов, облака и кроссплатформенной разработки. На Windows C# давно используют для бизнес-приложений и внутренних инструментов. В Unity язык служит основным способом описывать игровую логику.
Язык встречается в больших корпоративных системах и маленьких утилитах. Это не означает, что C# автоматически лучший выбор для любой задачи. Смотрите на команду, существующий стек, библиотеки, развёртывание и требования к производительности.
- веб-сервисы и API на ASP.NET Core;
- десктопные и кроссплатформенные приложения;
- облачные функции и фоновые сервисы;
- инструменты автоматизации и обработки данных;
- игровая логика и инструменты в Unity.

Чем C# отличается от C++
Названия похожи, но языки и экосистемы разные. C# обычно выполняется под управлением .NET и использует сборщик мусора. Перенос синтаксических привычек между ними без понимания модели приводит к сюрпризам.
Для веб-API, внутренних систем или Unity C# часто даёт быстрый и удобный путь. Выбор делают по продукту, а не по тому, у какого языка решительнее выглядит значок.

Первый проект
Начните с консольного трекера задач: добавление, список, завершение, сохранение в файл и обработка неверного ввода. Затем перенесите данные в небольшой веб-API с методами создания и чтения. Так вы увидите, как язык остаётся тем же, а слой приложения меняется.
Добавьте несколько тестов и README с командами запуска. После этого выберите специализацию. Прыжок сразу в огромную архитектуру с двадцатью пакетами выглядит солидно, но часто скрывает непонимание базового потока данных.

Вывод KGAM. Сначала зафиксируйте нужный результат и ограничение, затем соберите минимальный черновик и проверьте его на реальной задаче. Такой порядок быстро показывает, где инструмент действительно помогает, а где только создаёт видимость бурной работы.