Yes, that's the normal way to use FastLED. The "buffer" is the array of CRGB objects. FastLED.show() is the display function.
The speed is likely limited by the required LED data transfer protocol, not the processor's speed.
Regarding code like this:
OP is doing it wrong no matter how stubbornly he insists otherwise.