AppStates are for controlling the state of a game. So as a rule you only use one instance of them. For example a main menu state. An input control state. A game over state etc. You can control and map input, a GUI, the whole scene, etc… I.e. a game state.
Controls are for controlling individual scene objects and their behaviours. For example a Rigidbody control moves a model object according to the physics engine. A LOD control would control a scene objects level of detail according to its distance from the camera.
An appstate gives you the whole application so it lets you in essence contain a state of the game, whereas a control only gives you access to the spatial it is attached to and so lets you control its individual state.
I guess you could use an appstate as a replacement for a control if you wanted to. I mean there’s nothing stopping you. But that’s the flow of the API. I guess the key words are encapsulation and disambiguation.