Basically I agree what @ChrFin commented on your post but I want to answer your questions anyway.
Yes but only if you needed to. You should consider that Post
entity might have virtual properties referencing to other entities. In case of that, you might not need separated repository. However you should consider performance issues while loading related entities.
From my experience the best place to map to the ViewModel is service layer or manager layer - depends how you want to call it. I always try to keep my controllers thin as possible. As your applications grows you might want to reuse of your logic in other applications e.g. WCF. If you have transformations, business logic, other things in your controllers you'll be not able to share them.
Depends. If you want to avoid multiple dependencies in your controller (which aslo have impact in unit testing), you should create just one service per controller - as I said it's not the rule. Service might contain multiple repositories. Generally, you don't want to as many services as repositories.
If you're starting developing application you should check this useful links before you decide to use repository pattern:
Favor query objects over repositories
Say No to the Repository Pattern in your DAL