Regarding header ambiguity, why not keep it simple and accept /all/ headers with matching names to sort their tags earlier?
Good idea, can do, shouldn't be too complicated.
At least this is easy to explain (e.g. in the manual) and we won't get the wrong header (unless it's named completely different, of course).
I personally wouldn't explain anything to users :-). Basically, from user's perspective, the "AI" in Geany does its best to sort tags so the most relevant ones come at the top and that's it.
Might squash the last two commits into earlier ones but it's your call.
Yeah, that's the plan.