So I've been playing around with this for a while and finally figured out a solution that is possible with views only (although in my example I use the Entity reference module). I thought I'd post it here since I took me ages to figure out and I hope I can save someone the hassle. It's actually not that hard in the end.
The aim here is to have a view that lists all client logos and if that client has a related project, link to that, otherwise don't.
Step 1 is to get the entity reference module.
Step 2 is to add an entity reference field to your client content type with an autocomplete widget. You'll want to target a specific content type. In my case I targeted a project. Make sure you set a maximum of 1 entry for this field/
Step 3 is to edit your client content and add references to projects in your newly created field.
Step 4 set up your view. You'll want to get your entity reference field that you just created and set it up. You need to exclude it from display and you select entity id from the field formatter option.
Step 5. Next you need to rewrite the output of your entity reference field. You'll want to use the format node/ + [replacement_token] so you get a valid url. Importantly, you need to go into the No results behaviour tab and check hide rewriting if empty. Because we hid our entity field from display, it will now only be rewritten if someone has added a reference to a project in the client content type.
Step 6. Now we need to edit the settings for the logo field. Importantly, the field order must be entity reference field followed by logo field.
Step 7. In the logo field settings go to rewrite results and check output this field as a link. In the link path we can use replacement tokens and we want to use the field that we have just rewritten in step 5. In my case I rewrote [field_related_client_projects]. Before it was just an entity id. e.g. 768 or whatever. Now however, this replacement token is node/nodeid so it can be used as a link
Step 8. Uncheck hide rewriting if empty.