Pull all parent records with or without child record - if child record exists select latest record
In your WHERE clause, your v1.VMDateLink = SELECT MAX(VWDateLink) ... will not be true since the MAX will return NULL, and NULL is never equal to anything including NULL.

Try adding OR v1.VMDateLink IS NULL, but in general, I would create an inline view on vac_watch_check_dates with a single row per VWLink with the max VMDateLink.