What's the best way to share data between threads? I usually use message queues, but it seems like this feature hasn't been fully developed in the Particle firmware. Since Particle uses FreeRTOS, is it possible to use the xQueue function on a Particle device?
You should be able to use FreeRTOS queues from Particle firmware. You don't need to add a library. I don't think you need to add a header file, but may for certain functions.
xQueueSend and its relatives are used in Device OS itself but I think it works from user firmware as well.