The register sp is used as stack pointer, pointing to the last stored value into stack ("top" of stack). So EX (sp),hl will exchange value of hl with the value on top of stack.
Contrary to "top" word, the stack grows in memory by decreasing the sp, and releases ("pops"...