Question 1: your description is a bit confusing and it's a pity that on the forum you can't show with your hands how you imagine it.
By default: +X points horizontally right, +Y is vertically upwards (if that's what you meant by "above the monitor" then it's correct) and +Z points into the monitor, away from you. If by "+Z is flying at my face" you meant that +Z should be pointing towards you (while the other two axes remain unchanged), then it's not possible, because you can't rotate a left-handed coordinate system into right-handed.
If you want a top-down view for the camera, so that it's looking at the ground: with the above rules, the "ground" is the X-Z plane and the camera would be looking vertically down along the Y axis. That means the camera should be rotated 90 degrees around the X axis to face down. This should do the trick: dbRotateCamera(90, 0, 0); Then position the camera at a positive Y coordinate, high enough to see the area of ground you want to see. With the Y coordinate you control camera height, with the X-Z coordinates you control its horizontal position parallel with the ground.
Instead of dbRotateCamera, you can also position the camera at a high Y point, e.g. dbPositionCamera(0, 200, 0); and then use dbPointCamera(0,0,0). It will have the same rotation effect: make the camera look down.
Question 2: With dbFixObjectPivot you can set the current rotation of an object as the default. That will be its zero point for all subsequent rotation commands.
Question 3: the objects should have some reasonable size. There are no general guidelines, but they should be scaled so that they fit each other, they fit the game environment (e.g. the size of your terrain), and also take into account that you may need to calculate with those sizes, so you don't want an overflow or underflow in your variables. Otherwise, make the sizes so that it's easy for you to imagine and handle. For example, if a man is 1.8 m (or six feet, whichever you prefer) and a building or tree is 10 meters tall, it is easier than some arbitrary size which does not correspond to anything in the real world.
If you buy models from the store or download them from somewhere else, you can check what sizes they are. There are dbObjectSizeX (and Y and Z) commands that tell you the sizes in three directions. Then you can decide whether to leave them as they are and calculate with that size or you want to scale them.
EDIT: Also take into account that scaling takes time, if you need to scale every object after loading them, then the loading time of the game will be longer.