Hello Stu!
Here is how I do it and it almost always works adequately for me. Using a scenario similar to this should give you what you're looking for:
Starting with the generic ConfigMgr Collections "All Windows Servers" and "All Windows Servers with KB2286198"
Step 1. Create a Collection called: "All Windows Servers without KB2286198"
Step 2. The WQL query that I would use on "All Windows Servers without KB2286198" Collection is:
select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System where ResourceId not in (select ResourceID from SMS_CM_RES_COLL_????????)
Step 3. Notice the "????????" in the query. You need to insert the Collection ID from the Collection "All Windows Servers with KB2286198"
Step 4. Choose to 'Limit to collection' (should be the same collection limiting as "All Windows Servers with KB2286198") and identify you all servers collection for this example it would be "All Windows Servers"
This should now give you a new Collection ("All Windows Servers without KB2286198") that identifies all servers NOT listed in the "All Windows Servers with KB2286198". This should be what you are looking to accomplish.
An easy way to test the validity of this is to note the total of systems listed in the "All Windows Servers" collection. Then combine the totals from "All Windows Servers with KB2286198" and "All Windows Servers without KB2286198" -- which should be the same amount as the total from "All Windows Servers".
I hope this helps.
/cheers