There haven't been many answers, so I'll just chip in what I can. Disclaimer: I really do not have much experience in 3D. This is from what little experience I do have.
I am fairly sure UDK and many other engines use, for indoor surfaces, static meshes. They block out levels using rough polygon geometry and use these to playtest in the beginning, but then have artists build meshes and substitute these for the geometry when it's time to start thinking about releasing.
However, I do know for a fact that nearly everything in Valve's Source Engine (TF2, Half-life 2) is polygon geometry. Stairs, buildings, most of the levels are just made of rectangles and the occasional wedge. To be honest, I'm not sure how exactly they're defined in the .bsp format, but I'd imagine it's fairly simple.
Even then, they do need some static meshes (represented, during collision, by axis-aligned bounding boxes) so they can represent things like trees, or fences, or other complex geometry. In addition, they have heightmaps (named displacements) to take care of terrains. Using these three tools (brushes, meshes & displacements), good level designers, and a hell of a lot of optimization tricks, Valve manages to make some pretty impressive maps. Here's an example (credit goes to visualwalkthroughs.com for the screenshot):
Nearly everything you see here is simple convex geometry (except for the robot, of course). The arch is made up of triangles approximating a curve.
What I'm trying to get at here is that there's no shame in using plain block geometry, just defined as coordinates & length/width/height. Basically, your hallways would just be made of four rectangular prisms - a floor, two walls, and a ceiling. Doorways would also basically be walls, except the wall would have to be made into three rectangles - two for the sides, one for the top of the doorway. Windows... well, you'd have to think about those yourself, because 3D lighting is beyond the scope of this post.
If I were starting out, I'd probably just go with that kind of static geometry at first, and then work on some sort of mesh loader later to pretty up the maps. Hope that helps.