Tim,
Well, the intent is pretty simple ;-) Just give people a way of making things at certain resolutions without screwing up their environment permantly. Try to get as close as you can to a reasonable interpretation of the request if it can't be done "properly". If you think it through from that point of view the behavior becomes perfectly well-defined.
That's ok then. So resolution first, fullscreen if it can be done, depth optional if it can be done. Remember original screen resolution when entering fullscreen and return to it when exiting fullscreen. Fail if you can't get 'reasonably' close where 'reasonable' is not well-defined.
"Reasonable" is perfectly well defined. It means: If you don't do something all (such as resolution or depth changing) are you free to silently ignore that particular aspect. If you do support it at all, then you either do it right or you fail.
If I request 800x600x32 fullscreen and you don't do resolution switching, you can ignore the fullscreen/depth request. If you do resolution switching but don't do depth switching, then you may ignore the 32bpp, but you may NOT ignore the 800x600 fullscreen request. You either get me into fullscreen 800x600 - or you fail. If you do both, resolution and depth switching then I expect to get 800x600x32 - or you fail.
Simple. Really.
Cheers, - Andreas