Hello Frank,
You are correct that the two examples leave you with VERY different data. I'll try to break it down working from the inter-most aspect of the segment and working outward. The main aspect of this comes up all the time when I review other's reporting or during training sessions, I'd even say it's the most common misconception about how segments work.
1. Visitor level - eventX does not exist
Working from the inside out, we take a look at the criteria "eventX does not exist" . Once we find a record where eventX does not exist, then we look at the level of the container (this segment is at Visitor Level). Visitor level container means we want to keep all the data that Visitor has ever done (which Includes the records where eventX actually exists.
Let's say that eventX happens somewhere deep in your site. The first record of data is likely to be a pageview of a homepage - which doesn't have eventX, right? Well, your segment found the pageview record for the homepage (eventX does not exist), and then kept all of the data anyway! So the segment ends up not really filtering out any data.
2. Visitor level - eventX exists (exclude)
This one is much more explicit in finding eventX records, so it works well. Working again from the inside-out, we start with the criteria: "eventX exists." Once we find a record that has eventX, we can then exclude all of the records from that visitor (hence the Visitor Level container again)
So in this case, if VisitorABC ever had a record with eventX within your timeframe, then ALL of his/her data would be thrown out and not counted in the report.
So, overall #1 is a very common mistake that people make in reporting, but hopefully this info clears up the difference a bit.
Another good example is the following:
- Visitor Level - PageName does not equal 'XYZ'
This segment would be true for just about every since visitor of your website (they see the homepage, or a different page, or a click event record, etc). Thus, the segment has almost no effect.