Short and simple explanation is:
visibility:hidden- It is not visible but gets up it's original space
display:none- It is hidden and takes no space.