ECC memory is error correcting memory. Sometimes, very rarely, memory can get corrupted, and a bit may get flipped from 0 to 1 or vice versa via anything from hardware error to cosmic radiation. ECC memory has some extra bits that tries to detect these errors via these bits of information. Its not foolproof, but its SOME form of prevention. Because of this extra bits of information that it has to process, its slightly slower than non-ECC memory, but more secure. Generally, ECC is not needed for most computer uses, unless you're running some mission critical application.
CL stands for cache latency, which is the amount of time it takes to access information on the cache. CL2 takes 2 clock cycles to access, and similarly CL3 takes 3. Memory is rated as such, but your BIOS may allow you to override this setting. However, if you take CL3 memory and set it to CL2, it may not work because your memory simply isn't fast enough, there's no gaurantee, just like overclocking.