Yes almost all RTOS implementations use interrupts.
A timer is used as a timebase for the system, which can trigger the scheduler to review the current set of tasks and dispatch a higher priority task that comes out of sleep (e.g. if you use a time delay in the function).
Most ARM implementations I've seen also use software interrupts like system calls, to trigger context switches and/or switch to "kernel mode" (depends on how religiously that has been implemented) to do the "magic" a nice RTOS should provide.
If you're concerned about UART and most likely the interrupts you'll use there; then make sure nested interrupts is enabled and that the RTOS interrupts are set to a lower priority than the UART.
If you then keep the UART interrupts very short (write data to buffer and use some IPC from FreeRTOS to trigger a task for processing), it will work quite well.