How can I add or remove links to nodes in a list depending on the values of some of the fields I have a lot of content migrated over from a legacy CMS.  All of the nodes have some value, but there were a lot of entries that don't need more than for their information to show up in the long lists (They don't need individual node pages).  Let's call the three fields that need checking: 


abstract
related_websites
public_files


What would be the best way to set it up so that if abstract is empty, and the multiple entry allowed related_websites and public_files both have no entries, that the entry still be listed, but there be no link to the full node.

I'll need to do this all over the place, from search results to listings by date and by content type, so the easier it is to implement the better.  Would this be better done in a theme or a module?
This is probably one of those questions that might fall under opinion-based, but I'll give my answer.

The answer really depends on your needs. It comes down to the question, does stub content impact display or workflow (editing, moderating, viewing, etc.) around the content? In either case, you'll want a centralized piece of logic (e.g. mytheme_is_stub() or mymodule_is_stub() function) that determines if the content meet your stub criteria. 

If it impacts just the display then you want a theme; you can use your centralized logic to determine when/where to alter rendering of content. 

If it impacts the workflow (e.g. you want to prevent an author from creating stub content or alert them about stub content) then you want a module; you can use your centralized logic to determine when/where to alter workflow around the content.

From your description (altering links, search display, etc.), it sounds like your only concern is display, if that's the case then you want a theme.