se prevedi che una tabella (tb2) abbia piu' record non riferiti in tb1 e vuoi vedere questi record di tb2 non riferiti, devi usare un right join (nel tuo caso) e non una inner join.

codice:
query2: "SELECTtb1.*, max(tb2.data) as data_2
FROM tb1
right join tb2 ON tb1.codice1 = tb2.codice2
WHERE tb1.codice1 IS NULL
AND tb2.data = '' 
GROUP BY tb2.codice2"
ho lasciato come hai scritto tu, ma non ha senso select tb1.* se si richiedono i campi inesistenti. cosi' come il raggruppamento deve essere sulla tb2.