f/: lhs = rhs assigns rhs to be the value of lhs, and associates the assignment with the symbol f.
TagSet defines upvalues or downvalues as appropriate.
The symbol f in f/: lhs = rhs must appear in lhs as the head of lhs, the head of the head, one of the elements of lhs, or the head of one of the elements.
A common case is f/: h[f[args]] = rhs.
You can see all the rules associated with a particular symbol by typing ?symbol.
If f appears several times in lhs, then f/: lhs = rhs associates the assignment with each occurrence.
When it appears in symbolic form, TagSet is treated as a scoping construct (see Section A.3.8).
See The Mathematica Book: Section 2.4.10 and Section A.5.2.
See also: Set, UpSet.