Personally, I haven't found the gnu efi toolchain very helpful. I just use clang with the appropriate flags, which are:
-target x86_64-unknown-windows -ffreestanding -fno-builtin -fshort-wchar -mno-red-zone
And link, again with clang, using these flags:
-target x86_64-unknown-windows -nostdlib -Wl,-entry:efi_main -Wl,-subsystem:efi_application -fuse-ld=lld-link
I believe you can do the same with gcc and gold|gnu ld without much more effort. The toolchain doesn't really justify its complexity at all.
The headers, on the other hand, are invaluable. I use c-efi[1]'s headers, but would probably use gnu efi another time; c-efi has some bugs and missing structures. Worth noting: despite the name, gnu efi isn't gpl licensed. In fact, I don't think either (c-efi or gnu efi) can really be considered copyrightable; they're essentially direct translations of the spec.
1. https://github.com/c-util/c-efi