Dialplan can have different sections, named contexts, which are completely separated from each other. Because of this separation, contexts can be used to implement a multitenant system (one only FreeSWITCH serving both companyA and companyB, without worries about extensions overlapping).
Based on where the call come from (that is, which protocol, network interface, or port) or based on an explicit "context attribute" of the user originating the call, the incoming call is "sent" to a specific dialplan context. At the end of that context the call exits the dialplan.
Contexts are so much separated one from each other that often people talks about different dialplans, while actually they mean different contexts. Formally there is only one dialplan, the XML one. For all practical purposes, you too can think of different contexts as different dialplans....