I wrote an SD card bootloader for a couple MSP430 controllers without using a library, and in assembler. I was struck by this lack of information on what exactly is going on. In the end, I just used the same magic numbers everybody else uses. For each command, you send certain parameters, and you get back certain responses. CMD8 is always sent the same way, but it's not clear what it means. And as far as I can tell, it all works pretty well in the end. I found the attached flow chart which was very helpful in dealing with the various kinds of cards you may need to handle. But I think it only goes up through SDHC.
I would just say that based on my experience, which was limited to only SD and SDHC, and FAT16 and FAT32, this is not a trival thing to write. You have the differences in card types, and the differences in the file systems that have to be dealt with. And magic numbers have their benefits.