Attributes
Syntax
Attributes are declared as classes descending from TCustomAttribute.
DemoAttribute = class(TCustomAttribute)
private
  FID : Integer;
public
  constructor Create(ID : Integer);
  property ID : Integer read FID write FID;
end;
Attributes can be applied to almost any type, class, variable or method. The word attribute can be omitted from the attribute name when applying them.
[Demo(1)]
TSomeClass = class
private
  [Demo(2)]
  FNamed : string;
public
  [Demo(3)]
  property Named : string read FName write FName;
  [Demo(1)]
  procedure DoStuff;
end;
Further reading
Introductory Tutorials
Malcolm Groves (Emb.) introduces attributes.
http://www.malcolmgroves.com/blog/?p=476
Robert Love shows many of the places in your code where attributes can be placed.
http://robstechcorner.blogspot.com/2009/09/using-attributes-and-tcustomattribute.html
Malcolm Groves (Emb.) demonstrates the IDE refactoring support for attributes.
http://www.malcolmgroves.com/blog/?p=554
Use cases
Malcolm Groves (Emb.) uses attributes to specify constraints for validation.
http://www.malcolmgroves.com/blog/?p=530
Robert Love uses attributes as part of his XML serialization of objects.
http://robstechcorner.blogspot.com/2009/10/xml-serialization-control-via.html
Craig Stuntz (TeamB) suggests the developer of the CodeHealer static analysis tool could detect attributes within your code as signals to ignore certain code sections.
http://blogs.teamb.com/craigstuntz/2009/12/22/38495/
The Doric Temple talks about using attributes within Object Relational Mappers.
http://thedorictemple.blogspot.com/2010/03/on-orms.html
http://thedorictemple.blogspot.com/2010/03/attributes.html
Barry Kelly (Emb.) discusses when an enumerated type is more appropriate than an attribute.
http://blog.barrkel.com/2006/08/attribute-design.html
Jordi Corbilla experiments with using attributes within DUnit test projects.
http://thundaxsoftware.blogspot.com.au/2012/04/dunit-and-tcustomattributes.html
Francois Piette uses attributes to indicate which class properties and fields need to be persisted out to disk.
http://francois-piette.blogspot.com.au/2013/01/using-custom-attribute-for-data.html
Primoz Gabrijelcic discovers an undocumented syntax feature allowing multiple attributes to be listed on the one line.
http://www.thedelphigeek.com/2012/10/multiple-attributes-in-one-line.html
Bugs
Lars Fosdal discovers that attributes do not work with generic types.
http://delphi.fosdal.com/2010/11/another-generics-rtti-bug-attributes.html