You should learn c#. The net 6 makes heavy use if the following c# features
Interfaces
generics
lambda (closure) functions
Expression trees (used with binding)
Then there are several design patterns you should know very well
Interface design pattern
Dynamic dependency injection pattern (DI)
The builder pattern
Once you learn the above it will be simple to read. <> are used with generic interfaces. The builder pattern and DI is key to understanding the program.cs file.
For example
// register a dbcontext for DI using a generic method to define the actual type
// then pass a lambda to initial the DatabaseContext parameters
builder.Services.AddDbContext<DatabaseContext>
(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
// register a concrete type of IUser to be available to be injected
// transient says it created on every request
// AddTransient is a generic method requiring two type definitions
// it’s actually overload so there are several signatures
builder.Services.AddTransient<IUser, UserManager>();