lhs := rhs assigns rhs to be the delayed value of lhs. rhs is maintained in an unevaluated form. When lhs appears, it is replaced by rhs, evaluated afresh each time.
See notes for Set.
SetDelayed has attribute HoldAll, rather than HoldFirst.
You can make assignments of the form lhs := rhs /; test, where test gives conditions for the applicability of each transformation rule. You can make several assignments with the same lhs but different forms of test.
lhs := rhs returns Null if the assignment specified can be performed, and returns $Failed otherwise.
See The Mathematica Book: Section 2.4.8 and Section A.5.2.
See also: TagSetDelayed, Unset, Clear.