Mule ESB allows defining variables to store data, including flow and session variables. Lists and maps can be defined as Mule variables similarly to Java by using square brackets. Values can then be retrieved from the list or map using indexes or keys, and the list values can be reassigned. For example, a list variable can be set as #[{1000,100,14,1}] and values retrieved using flowVars['test'][0]. Similarly, a map can be set as # [{'k2':'new', 'k3':'v3'}] and values retrieved using flowVars['customMap']['k2'].