I am struggling with the exact same thing. I am working on creating a "physical UI" for my Bachelor Thesis since 3 months. In general the documentation of the Leap Motion is lacking behind so hard. It's very shallow and incomplete. There are many important functions and behaviors that you only get to know if you read the sourcecode of the Leap Motion.
NotifyTeleported() is just one of them.
And now regarding your questions:
It seems as though the brushbones are created during runtime, so I am not sure how to detect for collisions between specific fingers and unity objects.
Yes they get created during runtime and all the bones have the same name, which you could easily change in the InteractionBrushHand.cs class. Otherwise you can't check for a certain bone.
I don't know the original code but just STRG+F for "GameObject brushGameObject = new GameObject ("
and replace the line with:
GameObject brushGameObject = new GameObject ("Finger_" + fingerIndex + "_" + jointIndex, typeof(CapsuleCollider), typeof(Rigidbody), typeof(InteractionBrushBone));
But still, this information is useless because trigger do not work with the Interaction Engine Brush Hand. Especially if you are using joints on the same object.
The only workaround that actually got me to a "successful" trigger,was as follows:
1. Create an empty Gameobject.
2. Give it a Boxcollider, Rigidbody (with no gravity, fixed position and rotation) and an InteractionBehaviour Script.
3. OnTriggerEnter, Stay and Exit should be called when your Hand is in the collider.
Problem: Exit will be called immediately after Enter and Stay. So you will never know whether your hand is still in the collider or not. You only know when it enters the collider.
Also can I use the interaction engine and the LeapUI module (it seems as though this requires physics hands)?
Yes, it requires physics hands. So you have to change the hand, which I also don't know how it works properly with the Interaction Engine.
A reply from Joe_Ward would be nice :'-)