Input from VR is available through Input.VR.
Both hands are represented as Input.VR.LeftHand and Input.VR.RightHand, this struct contains the position and rotation of each hand.
You can access the inputs for each hand's controller. This is generic to to support as many of the mainstream controllers as possible.
You can get the finger curl and splay, which allows you to pose the fingers to match your real life fingers in game. The VR Hand component does this for you.
The hands in the video up there are available on Asset.Party:
Headset position and rotation can also be accessed simply through Input.VR.Head.
You can get the position and rotation of any puck trackers, and also your base stations if you're not using a quest.
Haptic vibrations can be triggered per hand using Input.VrHand.TriggerHapticVibration you can call this as often as you like, if a haptic event is already running it will be interrupted immediately.
Something to consider is different controllers have different limitations to their haptics. For example, quest controller vibration frequency tends to be a lot less responsive than other controllers.