An XML dialplan is the standard and most efficient way to describe how a call must be handled by FreeSWITCH. There are cases where you need loops, conditionals, and other call handling logic that is not easily expressed in XML. Enter scripting, and you can use your programming language of choice.
FreeSWITCH supports many scripting languages (almost all of them). These languages also allow you to use the same primitives and access the same variables, so they're all functionally equivalent. The difference lies in their efficiency and their ability to embed, for example, how much CPU they consume, and how much RAM they need to execute the same call logic.
FreeSWITCH's most efficient and embeddable scripting language is Lua (www.lua.org).
It is a very easy procedural language, reminiscent of C and Perl, so it will be immediately familiar to most of you.