ECC, Parity, Buffered, Registered Memory
Buffered memory refers to memory featuring a mechanism to redrive signals to and from the module (this means that the memory module can have more modules. This term mostly refers to FPM/EDO memory (i.e., very old). In a modern context buffered and registered memory refer to the same thing.
Registered memory is a type of buffered memory that has a register (much like a CPU register) which holds data for an extra cycle before passing it on to the rest of the memory. What this means is that all data being sent from the memory controller is received (i.e., the memory isnt 'rushed').
In a modern context, Buffered Memory is synonymous with Registered Memory
Parity memory used to refer to a type of memory that is able to detect odd-bit errors however it should be noted that parity memory does not have the ability to correct these errors. In a modern context, almost all RAM has some form of error detection capacity and it takes special RAM to be able to correct them
ECC or Error-Correcting-Code memory is a step up from parity memory in that it is able to correct (on the fly) errors found with memory transactions. You can telll a memory module has ECC capabilities by looking at it: while most DIMMs will have eight memory chips, an ECC capable stick will have nine
To explictly address two common misconceptions, ECC memory is not the same as parity memory (although many manufacturers usually 'affiliate' the two terms) and ECC memory does not have be buffered/registered although that is a very common occurance
What does this all mean? If you're looking to build a server system where data integrity is important, the best you can get is registered-ECC memory (second best would probably be registered-non-ECC memory since the odds of getting memory errors is slim as it is and the presence of the data registers helps to minimize that already small chance). If you're not looking for server memory, unbuffered-non-ECC is the way to go (best performance route)