Yeah, I agree with your points and I think this is the best approach. ExtensionDeclSyntax is already the type we have to describe extensions, including attached attributes, and we can verify that the resulting extension uses the right TypeSyntax for the extended type (and still bind the extension directly on the compiler side). I'll update the pitch, thanks!
Possibly. I could imagine a future addition to @attached(extension) that allows you to name the extended type in the macro attribute, e.g. @attached(extension, of: MyType), which defaults to the type the macro is attached to.