1. The structure illustrated shows only PDF objects, both direct and indirect. You go beyond this into looking at the PDF contents as objects. This (PDF contents as objects) is not from 32000-1 at all. 32000-1 defines only contents as streams of operators and operands. PDFEdit is an abstraction of this to make editing simpler, to save you parsing PDF streams.
2. You can get object type. Look at the object methods starting CosObj. Look also at the options for enumerating objects, as that is the only way you can get a full list of the keys used in a dictionary.
3. It is entirely possible to duplicate objects or collections of objects (e.g. pages) into other PDFs by precisely examining Cos structure, duplicating stream contents etc. Beware! Some PDF files have recursive references. If you do not trap this your code will never finish,