Primeiro não sei o que você sabe no geral de programação e outras linguagens... mas, recomendo fazer um Console Application só para entender orientado a objeto, sintaxe da linguagem, manipulações de lista e tal. Depois pode fazer uma API, usando Minimal (sem controller) e depois com controllers. (Cuidado para não atropelar quando for pesquisar e tentar imitar algumas pessoas e você ficar criando algumas Class Library, você pode se embananar e se frustar. Entao crie as classes tudo num projeto só.) Depois pesquisa por injeção de dependência. Coloque um banco de dados: utilize EF Core e depois tente com Dapper. Tudo sem pensar em organização, faz funcionar. Até esse ponto uns conteúdos legais que acho: Balta.io (br), Patrick God (gringo). Documentação é bacana e bem legível. Depois alterne alguns bancos de dados, utilize biblioteca e mexa com JSON. De uma olhada em FluentValidation e DataAnnotation para validar classes e suas propriedades.
Deeeeeeeeeepois de aprender essas coisas, e fixar mais na cabeça... você vai atrás sobre o Program.cs ser uma classe, utilizar classe Startup.cs... criar Class Library para isolar mais os componentes e aprofundar em injeção de dependência. Aplicar alguns conceitos como MVC, Clean Architecture, CQRS, DDD. Tudo isso na documentação da Microsoft é bem forte. Sobre esse assunto: o Milan Jovanovic é fera demais, porém gringo. De bônus aprender sobre teste de unidade eu acho legal e divertido aplicar.