Now as for handling multi-quality m3u8s. It is best to just pull the multi-quality m3u8 stream URL offered by an online source and provide its media object attributes. The individual Plex player apps should read these multi-quality m3u8s and choose the best quality option to use, based on the users online video quality setting on that Plex player app.
Now supposedly the native software/SDK of a couple players/devices do not provide the option to read the various media values in a multi-quality m3u8 (though no one has ever told me what those specific players/devices may be). But the software/SDK for most players/devices used for Plex can and should be able to read and choose the qualities offered in a multi-quality m3u8.
But unfortunately some Plex player apps are just not programmed properly. So they just choose the first stream listed in a multi-quality m3u8, even if that is the lowest quality listed. The Android software, for example, is able to read and determine the various qualities offered in a multi-quality m3u8, but the Plex player apps for Andriod devices just chooses the first item listed. This issue has been reported to the Plex player app developers for Andriod devices, but they have yet to fix it.
Now you may find plugin code where the developer pulls the individual streams from a multi-quality m3u8 to work around a Plex player app that that is not properly programmed. But the plugin framework is not designed to access and parse m3u8 data (that is why the code for it can be confusing). And I personally believe that you should not use any "work arounds" to deal with issues with the various Plex player apps, because it does not encourage Plex to fix the issues with the individual Plex player apps that are not properly programmed.
And a work around that may fix an issue on one Plex player app may also create issues using another Plex player app. For example, splitting a multi-quality m3u8 into multiple media object versions may help you resolve issues using the Plex player app for Andriod devices, but Plex Web (browser interface) and Plex Media Player (PMP) do not even recognize multiple versions of a channel plugin media object, so that work around for Plex Andriod users would just create a new problem for Plex Web or PMP users.
Also, I am currently working on a pinned document so plugin developers can be aware of and share knowledge of known issues with the various Plex player apps and the plugin framework. See Known Plex player app and PMS issues supporting Plugin Framework.