I've seen this asked previously, but it's 3 years old, so I was really hoping that there were some other answers by now (new options? new add-on apps?).
In OS X (I'm using Mavericks), minimizing a window of an app will bring forward one of the other open windows of that app. Is there any way to stop this? I know people are going to ask what my use case is / why I want to do this, so here it is:
I'm a software developer, and I often work with multiple windows of multiple apps showing at the same time. Think a text editor for the source code, some terminals for compiling, git, etc., and browsers for reference. When working like this, I need to control exactly what windows are brought to the front or sent away on a window-by-window basis, or it messes up my context. I finally found a windows switcher to let me do this (for which I wanted to cry tears of joy), but one thing remains to fix: if I have my workspace set up, then I need to go to a browser for a moment, there is no quick way to return to my previous state. I want to get rid of the window I needed to momentarily bring forward, but if I minimize it, OS X starts popping up other browser windows and covering my work, so I have to keep minimizing until they're all gone, and there is much wailing and gnashing of teeth.
I've seen cmd-h suggested, but that's no good because I don't want to hide all of the other browser windows since I'm using some for reference. Bringing forward the other windows that I was working is also not a viable solution. Standard OS X behavior on that is to bring forward all of an app's windows, but that's bad since I'm only working with a few of them, and I don't want the whole bunch covering everything up. With an add-on, I can now bring forward any individual window, but if I'm working with multiple windows, bringing forward all of them that I was viewing will be slow. Splitting up between multiple workspaces is also bad I don't want to totally switch contexts. e.g. maybe I brought up a browser window to check email while my code is compiling. I don't want to switch to another workspace because I want to keep an eye on that compiling code so I know right when it's done. Ideally, I just want the top, transient window to be minimized (not closed; I may need it again in a minute or two) without it bringing any windows forward that were not already visible before I brought up that transient window.