Dear Arhanghelul,
1. Agree with geos987, you can use openlayers, extjs and GeoExt.
2. You can use Geoserver, mapserver or qgis lizmap service
3. You should be well versed in html and javascripting with google API, and other mapping API like yahoo, Bing and OSM
4. Check for reference www.housing.com and www.commonfloor.com/. You will get idea here. They have done this very well.
Delights