I want to implement a builder similar to the debug builders defined by the standard library. They are defined using structures like the following:
struct Deb
Yes, you're broadly right.
A bound <...: 'a> means that ... (either a type or another lifetime) needs to be able to outlive 'a. E.g. 'b: 'a means that "'b must live at least as long as 'a" (not strictly outlives, though: they can be the same).
The colon is read "outlives", so
'long: 'short
is read "'long outlives 'short".
As for an official doc on the topic, the only place I've seen it documented so far is in the RFC on lifetime bounds.