Firstly, this has nothing to do with IIS or app pools so let's just throw that complexity out the window. There is only 1 copy of the CLR on a machine. The current CLR is v4 which is what NET 4.0 to NET 4.8 run against. All NET 4.x apps that want to run on the machine will use the same CLR. It doesn't matter what version they compiled against. Suppose you installed MyApp which happen to be built against NET 4.5. You then install another app YourApp that was built against NET 4.8. During the install of YourApp it would confirm that you have at least NET 4.8 installed. Now all your NET 4.x apps are running against the NET 4.8 runtime. The CLR is a single set of files stored globally on the system.
Going back to your original premise, since you installed the NET 4.8 runtime then all the apps running in IIS that target CLR v4 will be using the NET 4.8 version because there is only a single copy. It doesn't matter whether they are using the same app pool or not.
Note that this is assuming the binary you're referencing is actually part of the framework. Most apps also rely on third-party libraries, including from Microsoft. Those are generally copied to your app's output directory at build time. In this case each app has their own copy. As an example, if MyApp relies on SomeLibraryA v1 and YourApp relies on SomeLibraryA v2 then we each have our own copy in the same directory as our binary. MyApp loads v1 and YourApp loads v2 because they are local binaries, not shared by other apps on the machine.