How complex should be the UI definition code (HTML/C#)?
As simple and stupid as possible. Once this is harder to test.
Where to develop as much user interface logic as possible?
In the page model. So that you can unit test it.
How to segregate UI definition from the UI logic in legacy projects (e.g: WPF/Win UI)?
Using Model View ViewModel (MVVM).
What’s a data annotation?
It’s a property that can be added to properties in order to extend their capabilities. E.g: [Required] and [StringLength(50)]