You can say that the bot framework can be classified in to the following concepts.
Connector: The bot framework is basically a REST full API that is used to communicate between the Bot and the channel. Now here the channel could be anything like skype, slack kik etc. Basically the connector library is used to perform an interaction between the Bot and the user.
Activity: The means to facilitate communication between the bot and the user is called activity. This is used by the connector. Now an Activity is an object which could be a message or any other type.
Dialog: Dialog in bot framework is used to model a conversation and conversation flow. You can have a dialog within a dialog to model a meaning full conversation. The main purpose of having a nested is model like is because of the re usability. The Dialog in the Dialog Context is maintained in dialog stack that are in a conversation.
FormFlow: Sometime the input from a user is more complex than just a message in those cases a form flow is used. For example if you want to take multiple input from the user like customer review or some general information regarding a complex question. The formflow can automatically generate dialog to maintain a guided conversation.
State: As obvious by its name the state is associated with a user. The bot frame maintain the state of the user that is communication with the bot at any given time, If the user leaves you can always reload the state of the user and see where he left and continue the conversation from there.