Hello, I am looking for some information about how high level languages communicate with the lower levels of the computer.

Hope this makes sense thanks.

Every high level languages has a compiler( or interpreter) who is responsible to translate them into machine low level code.

In C#, the compiler produces executable (.exe) files, dynamic-link libraries (.dll), or code modules (.netmodule) depending the options you use.

The code modules need to be linked in order to produce assemblies.
An assembly is the basic deployment unit and maybe an exe or dll file.

You can read the Compilers: Principles, techniques and tools to help understand how they work.