We've used
FastLED in the past with success. Power comes through the Arduino so your power source whatever is powering that. We powered ours by plugging it into the RoboRIO's USB although our comm was done over I2C with the built-in
Wire Library.
One thing to watch out for if you're doing comm and light updates semi-concurrently is how to wait correctly. If you need to hold a light pattern, don't use millis(). It interferes with retrieving comm data. Use
elapsedMillis instead.