(1) is a no-brainer and easy to set up with Hugo.
As for (2) and (3) – they are weird, since taxonomy name is singular (category instead of categories).
In my case, number (2) is easy to solve by creating aliases inside the front-matter (_index.md) for each taxonomy term.
The real problem is (3). On my existing website, there are facebook/twitter/G+ social buttons with hundreds of likes. Unfortunately, those social platforms do not respect 301 redirect, so if I change the structure of post urls, I’ll loose all the social counts.
In a perfect world I would like to keep old urls as they are and let Hugo build its own url structure for new posts.
Any ideas here? I also consider Nginx-based solutions.