Credo che il secondo sia più efficiente in quanto richiede solo una selezione, ma per essere sicuri, dovresti SPIEGARE ogni query e controllare i risultati.
EXPLAIN select tasks.*
from tasks
where
some criteria
and task.project_id not in (select id from project where project.is_template = 1);
EXPLAIN select tasks.*
from tasks, project
where
some criteria
and task.project_id = project.id and project.is_template <> 1;