Can an update function common to more than one property reveal which property is using it?
def update_function(self, context, origin):
    if origin == 'firstProp':
        #   do this
    elif origin == 'secondProp':
        #   do that


class MyCollectionProperty(PropertyGroup):

    firstProp = BoolProperty(
            name = "Fisrt",
            default = False,
            update = lambda s, c: update_function(s, c, 'firstProp'),
            )

    secondProp = BoolProperty(
            name = "Second",
            default = False,
            update = lambda s, c: update_function(s, c, 'secondProp'),
            )


use a lambda, which passes the 'origin' to the update_function.

An update_function that prints out the value of the property

def update_function(self, context, origin):
    # - use "origin" argument to pass the member variable being modified
    # - "self" will refer to the instance of the MyCollectionProperty
    print(origin, ':' , getattr(self, origin))  

    if origin == 'firstProp':
        #   do this
    elif origin == 'secondProp':
        #   do that