wow i think i figured it out. An example query i used was:
select distinct SMS_R_System.Name, SMS_R_System.LastLogonUserName, SMS_G_System_OPERATING_SYSTEM.LastBootUpTime, SMS_G_System_PATCHSTATE.ID, SMS_G_System_PATCHSTATE.Product, SMS_G_System_PATCHSTATE.Title, SMS_G_System_PATCHSTATE.Status from SMS_R_System inner join SMS_G_System_PATCHSTATE on SMS_G_System_PATCHSTATE.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_SYSTEM on SMS_G_System_SYSTEM.ResourceID = SMS_R_System.ResourceId inner join SMS_G_System_OPERATING_SYSTEM on SMS_G_System_OPERATING_SYSTEM.ResourceID = SMS_R_System.ResourceId where SMS_G_System_PATCHSTATE.Status = "Applicable" and SMS_G_System_SYSTEM.SystemRole = "Workstation" and SMS_G_System_PATCHSTATE.ID = "MS05-024"
this query would give me all computers that need may's updates. I think i realized why my collections were not updating. All the patches i installed were based off of the new Microsoft update scan tool, not the MSBA one. And i bet that this query looks for msba based patches. Thus, patches get applied but to this query, it does not seem like.