1. I’d recommend to have a look at this blog post: https://blog.jetbrains.com/teamcity/2017/02/kotlin-configuration-scripts-extending-the-teamcity-dsl/
If you want to define pipelines in the code, this blog post shows how you can do that with help of Kotlin.
2. Right, because TeamCity solves more general task – dependent builds, of which pipelines are only a special case. It is true however, that configured pipeline is still buried too deep in TeamCity web UI. But we’re looking for ways to improve it.
3. Do you want a pipeline consisting of builds from different branches? Don’t you think this will introduce a lot of confusion?