Update parameter on bpy.context.active_pose_bone changed
Getter (Setter) on a property

Small example, added active_pose_bone_length property to the scene.  Reports the length of the active pose bone or zero if none.  (AFAIK Blender bones cannot have zero length)

This way you are computing your property based on the selection, rather than checking selection change.

import bpy
from bpy.props import FloatProperty
from bpy.types import Scene

def get(self):
    pb = bpy.context.active_pose_bone
    return pb.length if pb else 0


Scene.active_pose_bone_length = FloatProperty(get=get)


alternatively could make this a context property

import bpy

def get(self):
    pb = self.active_pose_bone
    return pb.length if pb else 0


bpy.types.Context.active_pose_bone_length = property(get)