The Document Object Model is currently at first draft stage, and isn't even close to being a standard. The Python DOM is therefore not yet documented. If you want to look at the code and use it anyway, feel free (report any bugs you find), but be aware that your code may need to be changed for future DOM drafts.
The Document Object Model specifies a tree-based representation for an XML document. A top-level Document instance is the root of the tree, and has a single child which is the top-level Element instance; this instance has children nodes representing the content and any sub-elements. These sub-element nodes can have further children, and so forth. Functions are defined which let you traverse the resulting tree any way you like, access element and attribute values, insert and delete nodes, and convert the tree back into XML.
The DOM is useful for modifying the tree; you can remove a node from one place in the tree, and insert it somewhere else. You can also construct a DOM tree yourself, and convert it to XML; this is often a more flexible way of producing XML output than simply writing <tag1>...</tag1> to a file.
While the DOM doesn't require that the entire tree be resident in memory at one time, the Python implementation currently keeps the whole tree in RAM. This means you may not have enough memory to process very large documents, measuring tens or hundreds of megabytes. It's possible to write a DOM implementation that stores most of the tree on disk or in a database, and reads in new sections as they're accessed, but this hasn't been done yet, and such implementations often impose limitations on how the tree can be accessed.