The .EXE has the IL in it. There is a normal "header" in the executable that loads the .NET CLR. The application code is not compiled to native CPU code.
The .NET CLR JIT compiler will load the IL code, compile it to native code for the CPU it's running on, cache that native code, then the CPU will execute that.
If the machine running the application does not have the appropriate .NET Framework installed on it, the application will NOT run.
The .NET Framework 1.0 through 4.7.2 is for Windows only. It will not work on other platforms.
For a cross-platform app that you can run on Windows, Linux, and Mac, you would have to build the application using .NET Core 2. or better. There is still a runtime that has to be installed to run the app. See
Get started with .NET Core | Microsoft Docs[
^] for more information.