EXISTS and sub-query cost
You should find that each example results in a LEFT SEMI ANTI JOIN with equal costs. 


  The Left Anti Semi Join operator returns each row from the first (top)
  input when there is no matching row in the second (bottom) input. If
  no join predicate exists in the Argument column, each row is a
  matching row.


Out of habit I tend to use the syntax in your second example, which you could argue signals intent better than the others.