are these queries equivalent?

query 1:

MATCH (s1:Station)-[:DirectLineTo]->(s2:Station)-[:In]->(n1:Neighborhood{Name:'Hadar'})
WITH collect(s1) as Stations
MATCH (n:Neighborhood)
WHERE ALL (x in Stations where NOT (x)-[:In]->(n))
RETURN n.name

query 2:

match (n:Neighborhood)
where NOT EXISTS ( (n)<-[:In]-(: Station) -[:DirectLineTo]->(:Station)-[:In]->(:Neighborhood {name : 'Hadar'}) )
return n.name

If so, why would you use one over the other? Which one is more efficient?

They look equivalent to me. (However... I don't know your dataset or model)

Have you tried using PROFILE to see the execution plan?

e.g.

PROFILE MATCH (n: Neighbourhood) .....