Hmm, not sure I agree that LLVM has little documentation. My experience using it has been pretty smooth.
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.