Alex, the result of a conditional test is either true or false. You're thinking of the destination field of a calculation. The result of SunWuKung's IIf() was in fact null however when that result is compared against the table field value, the result is either true or false. If the result is true, the record is selected, if false, the record is bypassed.
SunWuKung, I can't quite figure out what you are trying to do. So I'm going to make an assumption. If the value of a certain field is "omitted", you want to retreive records with null values. Otherwise you want to retrieve records that match a specific value. You need a compound condition to do this. The Where clause will look like:
WHERE (([Forms]![Narrative_AllocDetailMain]![OmittedScaleGroupFrom]="omitted" AND [CompetencyID] Is Null)) OR (([Forms]![Narrative_AllocDetailMain]![OmittedScaleGroupFrom] <> "omitted" AND [CompetencyID] = [Forms]![Narrative_AllocDetailMain]![CompetencyID]))
Hopefully all the parentheses and bangs are intact from my cut and paste. But basically the statement is (A = B and C Is Null) Or (A <> B and C = D). Since the statement contains AND, OR, and NOT the parentheses are VERY importand to the correct interpretation of the conditional statement.