If you're working at the IR level, then there's usually pretty good documentation in terms of the doxygen and various pages explaining things.
But if you start venturing down into the backend, a lot of gotchas are never documented anywhere, just somehow learned through osmosis from another backend author or looking up code snippets from another implemented backend.
Sure; the article was about building compilers rather than backends. FWIW I looked briefly into building a LLVM backend (IR subset) for a DSP chip, and gave up partly for the reasons you mentioned.
Yes, there is a fair bit of documentation. But it is nowhere near any popular general purposes language. Also, most documentation isn't very accessible if you're not a compiler developer already.
(Note: I'm the author of the post)
If someone wants to get started on building a LLVM backed language, Iād recommend go with the Kaleidoscope tutorial [0] if one is new to compilers.
Regardless, compiling functions from a language you know to LLVM IR is a good way to learn how IR works. You can do this for C(++) with the clang --emit-llvm switch. In addition, many optimizers in LLVM are geared towards the IR patterns clang emits.