In most (all?) physic libraries you're collision detection is no related to what you draw on your screen. You can simplify shapes or groups of shapes that are visually complex with simple shapes for collision. You probably can reduce the number of collision shapes to a really small number of cubes.
Also, only use collision shapes and rigid bodies in objects that need to. What I mean is, if your character (let's assume you have one moving in that place) can´t jump, there's no need to check for collisions in the rounded top of the openings, or the spikes comming out of the walls, or the ceilings.
I used Bullet Physics years ago and I don't remember the syntax, so I can't help you with actual code, but here's the official "Hello World": http://bulletphysics.org/mediawiki-1.5.8/index.php/Hello_World
I don't think you can automatically disable some collision shapes when they're out of the screen, most of the time physic stuffs happen even if you're not looking (enemies would fall through the ground, or they won't be able to throw things at you), but I'm sure you can add/remove the rigid bodies from the "btDiscreteDynamicsWorld" if you want to at any time. Anyway, that sounds like premature optimization, so maybe you should check that feature later if you find that the collision detection is affected by those objects. I think the real intended use of removing something from btDiscreteDynamicsWorld is when that object will never interact again, adding and removing everything might even be worse for performance.