Existem NULLs em
taxon_name_element.parent_id
? A pergunta...
select taxon_id
from taxon_name_element
where taxon_id not in (
select parent_id
from taxon_name_element
)
...é equivalente a...
select taxon_id
from taxon_name_element
where
taxon_id <> parent_id_1
AND taxon_id <> parent_id_2
...
AND taxon_id <> parent_id_N
...onde
parent_id_X
são valores reais que estão atualmente no parent_id
coluna. Se mesmo um deles for NULL, o taxon_id <> parent_id_X
correspondente expressões irão "recolher" em NULL, arrastando toda a expressão WHERE com ela. Filtre NULLs para obter o que deseja:
select taxon_id
from taxon_name_element
where taxon_id not in (
select parent_id
from taxon_name_element
where parent_id is not null
)