I will quote an answer which I found on Stackoverflow belonging to that question i found as i stood before that decision myself:
Libfreenect is mainly a driver which
exposes the Kinect device's features:
- depth stream - IR stream - color(RGB) stream - motor control -
LED control - accelerometer
If does not provide any advanced
processing features like scene
segmentation, skeleton tracking, etc.
On the other hand, OpenNI allows
generic access to Kinect's feature
(mainly the image streams), but also
provides rich processing features such
as: - scene segmentation - skeleton
tracking - hand detection and tracking
- gesture recognition - user interface elements etc. but no low level
controls to device features like
motor/LED/accelerometer.
As opposed to libfreenect which AFAIK
works only with the Kinect sensor,
OpenNI works with Kinect but with
other sensors as well like Asus Xtion
Pro, Carmine, etc.
I am using freenect at the moment with success and haven't tried out out OpenNi so long. You can find some info on my projects website here (in german) and see what i have done so long with my kinect and ROS. Project is still under development.
On point i struggle at the moment is, that the ros-freenect-stack is just supported until ROS-Indigo and i want to update to Jade or Kinectic soon, if someone could help out here please contact me!
Fabian