Cmd-Tab once, switch to the last activated app. Cmd-Tab again, switch back to the previous app.
Cmd-` once, switch to the next window in the current app. Cmd-` again, switch to the next window (not back to the previous one). This is incredibly frustrating, because usually when I'm doing this I want to switch back and forth between two open windows, not cycle through ALL of them! And I'm certainly not going to remember what "order" 5 windows are in.
Also, having to think consciously about whether a window you're working in is within the same application or not to decide which keyboard shortcut you should use makes the whole keyboard shortcut a frustrating experience in OSX. Windows did it right. Alt-Tab switches to the last viewed window, regardless of what application it belongs to. Simple. Elegant. Genius.
I don't think it's confusing being able to distinguish from a Photoshop window and a browser window, but I do think the cycling behavior between the two should be consistent.
The OS X way definitely does add complexity to the UI, but I just think it is worth the trouble.
The problem is that I want to switch between a few windows that are not necessarily in the same application. In Windows (and Linux), it's a no-brainer. Alt-tab and I'm done. In Mac, I end up changing within the app when I want to change between apps and vice versa. I don't care if they're within the same app or not. I just want to do stuff between windows A and B and maybe C.
Example: I'm writing some code. I look something up in my browser. I also have a second window in my IDE with some more code I'm using as a template for what I'm building. In Windows or Linux, it's very easy to alt-tab between those 3 windows. Alt-tab, Alt-tab-tab. In Mac, I'm always fumbling with which is the right key combination to get the right kind of window switching and is this a text wrangler window or an xcode window? Aargh!