JIRA uses for its Workflow Management, the OSWorkflow library provided by OpenSymphony.
OSWorkflow provides many mechanisms to define a Workflow, using different concepts : Steps, Status, Action, Conditions, Validators , Post-function. Most of them are used and well described in JIRA Documentation.
If you take time to read OSWorkflow Documentation, you will discover that JIRA provides for Workflow design a part of capacities of this library. When you need to do more, you need to go to in the XML of OSWorkflow !
JIRA Community has made different contributions to go beyond JIRA in the Workflow design :