GPL: good if you want to make your project freely available to anyone who is willing to ship source code (which is usually "other free projects"), but also demand a payment if people want to ship without source (which roughly corresponds to "commercial projects").
MIT/BSD: good if you want anyone to be able to use your code in any way whatsoever, but you want to attach your name to it. Sort of an "hey, I did this!" mark. This essentially only requires people to preserve that mark. It also purportedly gives you some protection against frivolous lawsuits, but I don't know if the legal disclaimer is really necessary.
Public domain (availability varies by country): you want to disclaim ownership of the code. It's as if it had always existed, like air that nobody owns. Anyone can do anything they want in it, and if they pretend it's their work you have no recourse. Where disallowed by local laws, the WTFPL (nsfw) may be used instead.
Creative Commons: a set of licenses primarily targeted at artistic creations, like photos, drawings, music etc. You mix and match the conditions you like, such as "no commercial use" - it's up to you whether you allow or forbid this. Not very suitable for source code IMO.
So, if you want to release source code but think there's some commercial potential in it, use GPL. If you just want to give something to the world but have your name on it, use MIT/BSD. For small snippets of code, or if you have ideological reasons to do so, use "public domain" - copyright might not apply to small snippets anyway, and it makes you look very benevolent.
If you don't want to release source code at all, then none of these do you any good. You need something that describes the conditions of use for your program. I don't know of any ready-made licenses for this.