Adjacent margins will overlap if they do not have a set float (ie, defaulted to 'none'). This effect is only apparently seen in vertical margins, as adjacent horizontal margins will never come in contact without the use of float. This is because block elements attempt to take up the maximum available width (through auto margins) unless floats force them to be their real width (plus any margin and padding).
margin adjacent, vertical, no float
◀ There!
padding adjacent, vertical, no float
margin adjacent, vertical, float left
padding adjacent, vertical, float left
margin adjacent, horizontal, float left
padding adjacent, horizontal, float left
margin adjacent, horizontal, float right