Очень просто: когда вы отдаете управление операционной системе она не всегда точно знает, что вы хотите. Например среди прочего нарисовать что-то на экране. Для этого в аргументах при вызове пересылаете адресс этой функции (рисования) и тогда система сможет выполнить это внутри себя вызвав вашу функцию.