.Net Core 3.1 is in LTS mode (ends support in Dec 2022) where as .Net Core 5 is coming to general availability in November. However, there will never be a LTS version of .Net Core 5. They have a new release life. Every odd release just gets a general availability release, rather than an LTS release.
Pros of .Net Core 5
- Unification of runtimes (mono, …)
- Performance gains
- Language interoperability (swift, java, …)
- Not a lot of breaking changes
Cons of .Net Core 5
- No LTS release
- Fundamental packages like Xunit, Swashbuckler, Serilog, and etc, have not transitioned over yet.
- Still a lot of un knowns in terms of bugs, and stability.
- No Default Base Image provided my Microsoft yet, everything remains experimental
Recommendation: I think everyone that can should switch to .Net 6 some time after it comes out. Which is in Nov 2021, this would gave you a whole year to migrate to 6, while 3.1 is still being supported.
References
https://dotnet.microsoft.com/platform/support/policy/dotnet-core