O que é offsetHeight, clientHeight, scrollHeight?

Pensou em explicar qual é a diferença entre offsetHeight, clientHeighte scrollHeightou offsetWidth, clientWidthe scrollWidth? É preciso conhecer essa diferença antes de trabalhar no lado do cliente. Caso contrário, metade da vida será gasta na correção da interface do usuário. Fiddle , ou em...