Precisely those messages needed to do its job - no more, no less.
Ask a vague question, get a vague answer :-P
Agree'd, but I think pointing out a couple of the non-obvious ones you want to consider would be good:
WM_SYSKEYDOWN, specifically VK_MENU. In some fullscreen windows if the user hits alt it can hang the program for no apparent reason. The user just needs to hit alt again or esc but this is just bad to allow it to happen.
WM_SYSCOMMAND, specifically SC_SCREENSAVE. Letting the screen saver kick in is also bad form in a fullscreen app.
WM_DISPLAYCHANGE, often overlooked but in multimonitor setups you need to notice this if your app were on say the second monitor and the user hit Windows-P and changed to mirroring, if they have 2 different resolution monitors your full screen app could be forced into a different resolution. DX would trigger a device lost or reset I believe but a GL game needs to catch this and readjust view areas and all that.
The various CPU frequency change messages, power notifications (sleep/hibernate/etc) and related. You may not care about the CPU change but your app should respect sleep/hibernate and say disconnect from servers and/or go to a menu and wait for wakeup etc.
Hmm, I remember there being a number more of these annoying edge cases you really should handle but can't think of any more off the top of my head.