1. The command line arguments are actually passed to msbuild.exe as part of a dynamically-generated msbuild.rsp file. So, if you specify /p:SomeProperty=SomeValue, the property is global and would be available in all of the projects.
2. I'm not quite sure that I understand the question. You can add customization via the tfsbuild.proj file. You can register a web service to get notification via a BuildCompletionEvent (use bissubscribe to register).
3. We don't show that in the GUI. We didn't feel that there was a lot of value in viewing the build agents used to run builds, so we didn't add a column for it in the display. That information is stored in the database, if I remember correctly, so you could write something using the build client API that would show you that.
4. Yes. There's a new build client API in Orcas. The VS GUI was written on top of that API, and it's a public API.