but its so confusing i dont even understand how the receiver decode the message.
That's the great part about using a library. You do not need to understand how it does it's magic.
What you get is a return code that says whether or not the library got any data, and, if it did, a length and a buffer with the data in it.
The buffer CAN be a char array. The length tells you where to put the NULL to make a string of the char array.
Then, strcmp() can compare the buffer to known commands, like "LedOn" or "TakeAHike".