When you have frames or iframes then the frameset containing the frames or page containing the iframe is the parent. If you use self in that situation then you load into the frame or iframe, to load in place of the frameset or page that immediately contains that frame or iframe you use parent. Framesets can be nested and iframes can contain pages that contain further iframes so this is not necessarily equivalent to the full window. To target the full window regardless of how many layers of frames that you are into the page you use _top.
If you are not using frames or iframes then self, parent and _top are equivalent.
_self is equivalent to not specifying a target at all but is useful to override the default target specified in a base tag.