Yes, count(foo) will count the number of events where field foo has values (it's not null).
Ok that really does help. So does (foo in this case) HAVE to be a field? Or can it be an object within a datamodel/something other than a field?
It would always be a field available in event. If the events are selected from a datamodel, the this would be a field in that datamodel (DatamodelNodeName.fieldname or similar hierarchy).