The query works because, like most things with programming, you need to think of alternative ways of describing what you want to achieve. SQL queries against the data that you have in the tables, not what you don't have. If you need to determine if a value is not in the table, you can only compare it against what's already there.
That's why you have to use expressions like MIN(CustNum) + 1. The + 1 part may not be in the table, but CustNum is. The "holes" you're looking for are really numbers in a sequence. If x is in the table, but x+1 is not, then x+1 is a hole.
Since you want the first missing number, you need the MIN fucntion to check for the lowest field value in the entire table which matches the condition. To verify that x+1 is actually missing, i.e., the condition, you must check it against every value in that field. That's where the NOT IN (Select...) comes in.