The one point i am pondering currently is where to place the game states.
I think the only sensible place to put any game state is in the model.
Here is how I would (and do!) organise it:
1) Model: put all game logic and state here and nothing else.
2) View: Renders the state of the model once per frame.
3) Controller: Just a class implementing InputProcessor that does pretty much nothing other than translating input events to method calls on the model.
I'm not exactly sure what you mean by 'game state' but if you want to change the tileset that the renderer uses based on, say, whether the current level is a lava world or a forest world, then specify which type of world it is in the model (I guess if you have a Map or Level class then it would be a property of that), and when rendering (in the view code) look at that property of the model in order to choose your tileset. Make sense?
Basically, always store any information in the most suitable and relevant place. If you don't have a suitable and relevant place for a particular thing, then make one and put all similar/related things there.
Would one say it is ok to have texture(graphics)rendered from the controller layer?
No. Not game graphics anyway. You might render buttons and such for convenience, since they are conceptually part of the controller.
I find it all kind of gets confusing to an extend and end up chasing my tail.
Like we said before, this kind of stuff is much less important than getting something on the screen. Once you have stuff moving on the screen things get fun and the architectural work will just kind of get done in the background as you make your amazing game! Your first few games will probably end up with horrifically messy code, but you will learn so much and each one will be better than the last. Just enjoy the journey
