An thing or idea that refers to something that then refers to the original thing again. A => B, B => A, or A => B, => C, C => A, or something similiar. This is different from self-reference where something refers to itself (A => A.)
In programming languages that use garbage collection circular references need to be broken before the thing is tossed to the hounds. This is because many garbage collectors keep track of object's references and only nuke things that are not referenced to, and objects that point to each other have always reference count > 0.
Example of circular reference - something you really should avoid - in Perl:
my ($a, $b);
$a = \$b;
$b = \$a;
Not to be confused with circular definition.