How to automate setup of theme, pages, widgets, etc for a new site in multi-site?

You’ll want to hook into wpmu_new_blog. You can see the args you can pass it here (no codex right now…). That last $meta arg can take a lot of different settings.

You also might look into the WPMU New Blog Defaults. It doesn’t seem to do everything you want, but it might at least contain some good examples for how to use that hook.