The main things you want to keep in mind is that the queues and such are not for large amounts of data. It is better, for example, to statically allocate three buffers, and then send the buffer number over a queue interface, rather than send the data itself, which involves two copy operations.
The other thing to pay attention to is that you should only be using the ISR specific versions of the API inside an ISR. That, and minimize the code in the ISRs in general, but that is applicable to anything.
Although, libopencm3 has progressed nicely, so FreeRTOS + libopencm3 could now be a decent alternative to ChibiOS.
For those who like a full OS, RTEMS is a more complete solution.
A Real Time Operating System can provide many resources to application writers - including TCP/IP stacks, files systems, etc. The Kernel is the part of the operating system that is responsible for task management, and intertask communication and synchronisation. FreeRTOS is a real time kernel.