We're using MapGuide OpenSource here and are pretty pleased with its development environment other than lacking of documentation.
Some MapGuide devs and consultants will recommend you use the "basic ajax" web app to develop your app, but we found it limiting and used Fusion instead. Fusion uses OpenLayer.
Though MapGuide has Redlining built in, it's quite useless as is, you'll have to extend it to make it usable. And that will require a strong Javascript and PHP (or .net/java) background.
We use PostGIS as our RDBMS. Our design is pretty straight forward: each "table" represents a layer and each record represents a geometry. Everything is in one database, but spans across multiple schemas (it's easier if you keep it in one schema, though).
As to what to keep in DB and what shp: anything that you need "relational" power will obviously benefit from being in RDBMS. It really comes in handy when you need to query something involving multiple layers, or even relate it to non-spatial data in the DB. Or something that's constantly shrinking and growing. Only thing i would use shp for would be really static standalone layers that you need it to load fast, because shp will have speed advantage.
Hope this helps. I am no expert, but this is from a limited experience. i'd seek out further opinion also.