should I have a Model for each action that returns a Json Result, for clarity? or i should not bother, and I should use continue using anonymous projection?
Anonymous project is just fine for JSON results. Makes unit testing a bit harder but it's up to you to decide whether you want to introduce a view model here.
Should I have base Models (i.e. the 'simple' ones) and extended models that inherit from base Models? or should i keep the Models sperated, resulting in a cleaner (but less maintenable?) structure?
You could have inheritance in your view models.