Из
стандарта:
A p element's end tag may be omitted if the p element is immediately followed by an address, article, aside, blockquote, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, main, nav, ol, p, pre, section, table, or ul, element, or if there is no more content in the parent element and the parent element is not an a element.
Таким образом, с точки зрения браузера ваш html-код выглядит как:
<body>
<div id="z">
<p>TEST1 </p>
<p>TEST2 </p>
<p>TEST3 </p>
</p>
</p>
</div>
</body>
Можете убедиться в этом открыв в браузере консоль разработки (F12) и посмотрев структуру страницы. Вполне логично, что все три параграфа являются для div'а потомками первого уровня и попадают под правило css.
Что касается наследования - CSS расшифровывается как
каскадная таблица стилей и наследование в ней отменить нельзя, можно только перекрыть новым стилем, например так:
div > p {
color: red;
}
div > p > * {
color: black;
}