There really isn't too much difference in most applications between doing a does not exist (include), and an exists (exclude) condition. But when you start nesting conditions in your segmentation it's good to have both options (not to mention some people can conceptualize one function better than the other).
'Does not exist' is a great condition with many uses. The reason it tends to get people into trouble is due to the container's level being visitor or visit, causing the user to include records that they were hoping to not include.
I prefer to teach using includes most of the time, so here is an example scenario who's thought-process is "exclude" , but actually accomplished with includes...
It's not exactly your question, but hey - it might help someone else reading this
Let's say you want to have a dataset that does not have any pageview (s.t calls) records in it. You want all the records that are not pageviews, but your structure for s.tl calls is not consistent (let's assume you have some s.tl calls that are firing for errors, downloads, custom click events, custom exit clicks, overlayviews, or form submissions).
You can either try to identify all the other information you capture in the s.tl calls to include that, or you can just identify all of them with "PageView does not exists" or "s.pagename does not exist" conditions (any record that is not an s.t call is inherently an s.tl call (aside from other data sources- but we'll ignore that tangent)).
But when you make this segment you have to think about the container level. If you were to use an overall container level of 'visit or visitor' , then your segment would find an s.tl record, and then include everything at that level - which brings the pageviews right back in again. If you use this condition at the 'hit' level, then you will have a resulting dataset without pageviews, as intended.
It's a good practice to think about an explicit condition first "variable equals value" , before trying the opposite "variable does not equal value". If there are a lot of possible equal conditions, then you'll be better off going the not equal route within a container that's not going to bring that data back in.
However, don't write it off completely, because there are great ways of combining 'does not exist' or 'does not equal' with other conditions within a 'hit level container' to ensure the conditions are met within a single-record scope. That's where the capabilities of segmentation really start to skyrocket, as long as you're extra careful in the understanding of the results.