Regarding setting up your environment, I and other Kentico dev/partners do this all the time. V9 has many more CI improvements coming out specifically for this. What I do is have one person create the site initially and check it into source control. The database is typically remote either in the cloud or on your local network.
When you "send a new webpart to staging", if you're using the Staging app, this will simply send the configuration of the webpart over and not the physical files. You will need to either FTP those files or export and import those. Or use your CI tools to do so.
Technically, Kentico doesn't publish your site, you or some other process does. Kentico is simply an ASP.NET website with a bunch of awesome features.
Yes Kentico has a lot of configuration options within the UI and yes they are all stored in the database. You can use your web.config to store these values but they typically vary from dev, to staging to live. So it's ideal to create your own custom settings which you can configure within the UI which is supported and very easy to do. Creating these database driven settings do not require any C#.