I would say that llvm-pdbutil mainly exists to dump PDBs as human readable text, and to translate them to and from YAML. As far as interpreting the contents of the PDB to do something useful, like produce a stack trace, goes, the consumer of LLVM's PDB reading libraries is responsible for doing that. For example, LLDB at some point will likely implement stack unwinding with unwind data from PDBs.
I don't think we have any existing documentation or references for coding against the LLVM native PDB reading APIs, but you can look at the code in LLDB to get an idea for how it can be done.