I still think it's better to have a separate list for them and not use extern_vars. First so we don't need to filter them out for regular profiles compilation, and second so that order they appear in is stable and predictable, it's critical that order is preserved for index access. Maybe single list is already working well for that, but I think keeping effect objects slightly separately from normal shader compilation is not a bad idea.
I don't have a preëxisting opinion about that one, at least. Note that we already have some sorting logic for extern_vars, but that's not to pass a judgement on whether we should add more.
The main impetus for its addition was to collect globals, entry point parameters, and the entry point return value, all in one place, but that obviously isn't going to matter for techniques, or other things that are only in the global scope.