First off, I wouldn't recommend trying to learn from a release-grade bootloader when starting off, for much the same reason we generally discourage reading the Linux kernel when first learning - even if it is well-documented (and I have no idea how GRUB or Gujin are in that regard), they spend a lot of the code handling edge cases that will only distract from understanding the bigger picture. While it may seem pointless, studying and writing a toy boot loader first makes more sense. I've attached a copy of one I wrote years ago, maybe it will be worth your while to look at it.
Second, if you haven't done so already, take a look at the
overview of the boot process in the wiki. It will explain what the code is doing well enough that you can put together what the code is doing, at least. Again, reading the GRUB code is likely to be counter-productive at this stage, but even in a smaller bootloader you need to know what it is supposed to be doing to understand how it does it.
As for the question itself, I'll need to get back to you on that, but I can see two possibilities off the top of my head. First, it is possible that they are using a 16-bit real mode C compiler specifically for that part of the code. More likely, though, is that the assembly part of the loader switched to 32-bit protected mode even before any of the C code is running. I'll take a look at it later and see which of those is happening, or if it is something else entirely.