That is a "fork bomb", as you've heard. There's a whole wikipedia page about it.
The fork bomb in this case is a recursive function that runs in the
background, thanks to the ampersand operator. This ensures that the
child process does not die and keeps forking new copies of the
function, consuming system resources.
In short, what it's doing is it's creating more and more processes (by calling the same function recursively) thereby overloading the system.
You'll note that the function identifier is ":()" which you could replace with a name and indent the code to make it more legible:
By replacing the function identifier and re-indenting, the code reads:
bomb | bomb &
"Don't try this at home kids." -Mr. Wizard