1. What's the difference between using C3's Audio scripting AudioContext, compared to creating a new one entirely?
If you use the Audio plugin, Construct creates an AudioContext for that anyway, and so you may as well use the same one. Also Construct's Audio plugin handles all the surprisingly complicated code necessary to ensure that audio playback can be properly unmuted (such as handling unmuting via gamepad input), so you may as well re-use that instead of having to reinvent all that unmuting code.
2. How much can be read/changed with C3's AudioContext?
I can't think of any reason why you can't do absolutely anything you want with it. If you want to modify things created via Construct though, that will be tricky as it basically creates its own node graph and doesn't expose anything about that to script.
3. Could unavailable features be crammed into C3's AudioContext, e.g. "detune"
From script you can do anything you like with the AudioContext, so yes.
4. I think I understand that "audio tags" are deeply-rooted in C3 rather than being something we can use within Audio scripting, but can any info about tags be gained, whether scripting an "is playing" or scripting "play sound with tags", or must we always make C3 bridge functions to achieve this?
Tags exist solely in the Construct Audio plugin. Currently there is no way to interact with that part of Construct via the script API. At the moment the intent is either you play audio with event sheets, or play it via script. You can mix and match those approaches, but you cannot use event sheets to control audio played via script, and vice versa.