Attributes in VHDL allow designers to extract additional information about objects like signals and variables or assign extra data like synthesis information. There are predefined attributes that provide values, call functions, or create new signals, as well as user-defined attributes. Predefined attributes include value attributes that return bounds, function attributes that return positions or values, signal attributes that create delayed signals, and type attributes that return base types. User-defined attributes allow designers to specify custom attribute values.