Речь шла о случае, когда pTimerFunc задана, ...только в этом случае вызывается CALLBACK-процедура. А если ее не заказывать (заказать NULL), то получишь вместо вызова собщение WM_TIMER. При обработке последнего случая, действительно, можно сидеть в ее обработчике до посиненния и делать из него все, что душа пожелает.
Я же говорила о правилах поведения в функции, вызываемой из системы. Разница тут весь существенна. Сообщения обрабатываются ПО ОЧЕРЕДИ, а стало быть их обработка никогда друг на дружку не налезет. А CALLBACK-процедура может быть вызвана АСИНХРОННО по отношению к обработке сообщений. А это значит, что нельзя исключить возможность того, что из CALLBACK-процедуры будет вызван код, который в это время еще выполняется одним из обработчиков сообщений. В результате имеем типичную ситуацию, из-за которой в мультипоточных приложениях используют семафоры. Поэтому в данном случае приходится очень жестко самим соблюдать "правила движения", раз уж семафоров никто не поставил, а не считать, что раз их не видно, то все позволено.