The idle task runs with the lowest priority and sits in a loop when no other tasks are ready to run. The idle task hook allows a function to be called from the idle task loop to perform low priority tasks. Changing task priorities can be done through code examples. The FreeRTOS scheduler uses fixed priority preemptive scheduling, where the highest priority ready task runs and can preempt lower priority running tasks.