A window is a rectangular area of the screen. X supports nested windows, where child windows are only visible insofar as they are within the boundary of their parent. Every application window has a parent window, which the window is physically inside. Every screen has a single root window, which is the entire contents of the screen. The root window does not have a parent, of course. A window's descendents are called its inferiors. All drawing into a window is confined, or clipped, to the window's boundaries, including all drawing into the window's inferiors. Sibling windows can overlap, in which case the stacking order of the windows becomes important, as one window can cover, or occlude, all or part of another. Drawing into a window will not affect parts of the window that are occluded.
A window can be mapped, that is, put on the screen, or not. If a window is not mapped, it cannot be seen, nor can any of its inferiors, whether or not they are mapped. This means that a window can be created once, and then mapped and unmapped at will without having to destroy and later recreate it. A window is said to be viewable if all of its ancestors are mapped. A window is said to be visible if it is viewable, and furthermore, it is not occluded by any siblings.
The window manager is distinct from the X server. In X, the user (by using a window manager) almost always has control over where and how large top level windows appear on the screen. Windows nested within top level windows, on the other hand, are completely under program control. The window manager, in fact, is simply another X program running alongside your applications. This means that the user can change the look and feel of the windows at any time by changing to another window manager.