Clarification on UNION ALL of JSONB_EACH result
Question 1
From PostgreSQL Documentation Table 8.23 - JSON primitive types and corresponding PostgreSQL types:

JSON primitive type | PostgreSQL type | Notes
null                |(none)           | SQL NULL is a different concept


So you must not confuse SQL NULL value with with JSON null type.

Question 2
In your previous question you wanted the JSON value null to act as a kind of DELETE type. If you have both {"b": 3} and {"b": null} in the UNION and you do value &lt;&gt; 'null' the {"b": 3} will not be deleted. When you do NOT IN the pair b:3 will be left out of the new set too (the null type is found for the key "b" in the subquery).

Question 3
Related to question 1: NULL::JSONB means a SQL NULL value of the data type JSONB, not a JSON null type.