upgrading from .net6 to .net8 is basically changing the framework version, and updating nuget packages. the same should be true of the 3.1 code. the upgrade assistance can be used, but its pretty simple:
https://dotnet.microsoft.com/en-us/platform/upgrade-assistant
as for your approach. you should upgrade the netstandard 2.0 last.
- upgrade .net 6 and 3.1 libraries (optional) to net 8 (simple)
- rewrite 4.8 code to net 8 (bulk of the migration)
- upgrade .netstandard to .net 8 (simple)
upgrading the 4.8 code complexity will depend on the 4.8 features used. all webform code will need to be rewritten to MVC or razor pages. if you used MVC, the binding is much more strict, and may need refinement. there is no support for HttpContext.Current. WCF and SOAP calls are not as well supported in net 8.
as the project file structure is different between 4.8 and net8, its easiest to create a new net 8 project and add the 4.8 code as you port it.
note: if you run into issues with the nuget packages, runtime libraries used by the .net standard library, you can change it to a multi-framework project and build netstandard 2.0 and net 8 libraries. But as they currently work with net 6, this is probably not an issue.