I knew it was hurtful, somehow, but I just wasn't l33t enough to know why until I looked up "fork bomb".
Some days, I just feel old.
Other days, I feel old and stupid.
Inside the body, the function is invoked twice and the pipeline is backgrounded; each successive invocation on the processes spawns even more calls to ":". This leads rapidly to an explosive consumption in system resources, grinding things to a halt.
Note that invoking it once, infinitely recursing, wouldn't be good enough, since that would just lead to a stack overflow on the original process, which is messy but can be dealt with.
A more human-friendly version looks like this:
kablammo() { # Declaration
kablammo | kablammo& # The problematic body.
}; kablammo # End function definition; invoke function.