Heroku: Great for small applications and getting off the ground as fast as possible. It's easy to manage and your team can focus on features instead of worrying about maintaining operations.
Cloud (AWS, Rackspace, Azure): Great if you're expecting growth. You can start up instances easily and shut others down if you don't need them anymore. You still need to manage your servers, but as you grow to several servers, it'll be worth it.
Inhouse: If you don't expect growth, or you have enough money to hire a few people to take care of the equipment, this is the cheapest option for computing power. I wouldn't recommend it for a new company since it takes so much maintenance.
This depends on which environment you work on. Ruby has Capistrano, Python has fabric, etc. Heroku also has their own deployment method and some other cloud providers also do. A quick google search will most likely lead you to the most popular method for your technology.
My favourite is Hipchat (http://hipchat.com/). There's also Campfire (https://campfirenow.com/) and several other providers. Hipchat has a native client for each platform (even mobile) that gets really handy.
This is also a field with many competitors. My favourite by far would be Sentry (http://getsentry.com). There's also Airbrake (http://airbrake.io/) and HoneyBadger (https://www.honeybadger.io/).
This depends on what you want to monitor. The most popular in the ruby world is NewRelic (http://newrelic.com/). It monitors application and database performance. If you just want to monitor your server (cpu, memory, uptime), you can try out Server Density (http://www.serverdensity.com/).