This always confuses me. Here is the summary;
- .NET Framework – the original .NET, the one that ships on Windows and only on Windows; the current (and probably final) version of .NET Framework is 4.8
- .NET Core – the evolution of .NET, that is not tied to the OS as much, with slightly different feature sets, and where most of the Microsoft .NET effort has been for the last few years; .NET Core 3.1 shipped recently
- .NET Standard – an API definition (not implementation – akin to an interface) that allows a library to target a range of platforms in a single build, i.e. by targeting .NET Standard 2.0 a library can in theory run equivalently on .NET Core 3 and .NET Framework 4.6.2 (ish…) and others (Mono, Unity, etc), without needing to target each individually
- .NET 5 – the next version of .NET Core; the naming deliberately emphasizes that there isn’t a two-pronged development future consisting of “Framework” and “Core”, but just one – this one – which isn’t “Core” in the “minimal” sense, but is in fact now a very rich and powerful runtime; .NET 4 was avoided to prevent versioning confusion between .NET 4.* and .NET Framework 4.* (and again, to emphasize that this is the future direction of .NET, including if you are currently on .NET Framework)