It's really easy, you can use either the multiboot or multiboot2 commands. Nothing else should be needed.
Because I'm using the systems I'm the most familiar with. In this case that would be Visual C++ and C# (though C# is only used for some post built tools). On the whole it is a very good compiler and has good optimization so its not a bad choice in this case. Though I wouldn't object to providing build tools for GCC.
I wanted to try and use a stock version of Visual C++ to do this, and that means using MASM. On the whole I would prefer to use NASM (and it's not that hard to add it as a built tool to VS). In the future I might move the code over to NASM and just accept the cost of setup. If I do make custom rules for NASM I will contribute them to the project.