I think T: 'a actually means that any lifetime T contains must have a lifetime of 'a or longer. This of course includes the cases where T is a reference, but in general, T can be any type. Say if T is U<'x, 'y>, then it must be the case that 'x: 'a and 'y: 'a for T: 'a to be true.

Type might be the reference, yes, or it may also contain the reference. In the latter case, it'll have an associated lifetime, too (not larger then the one of the reference inside it).