Here is the simple answer to all those questions. Extends the JIRA actions using the webwork plugin module. There could be some alternatives in few cases (like handling it in a listener) but not always.
Webwork plugin module is designed to add more actions on to JIRA as well as to extend or override the existing actions. So how does all this work?
Let us quickly have a look at the actions.xml under WEB-INF/classes in your JIRA installation directory. This is where all of the JIRA's actions are defined. Here is the snippet that defines the CreateIssue action.
So we have the CreateIssueDetails action which uses the CreateIssueDetails class and the associated jsps. What we will do here is just override this action with our custom action class. We will provide an additional validation and also print some statements after the issue creation. Printing statements is ofcourse not a helpful exmaple but that is just a placeholder where you can do whatever you want to!
Here is how the atlassian-plugin.xml looks like when we override the JIRA action.
Coming back to our example, I have given a custom action class here com.jtricks.MyCreateIssueDetails. As I am not giving a full action class implementation here, I would start with extending the action.
Hopefully that gives an overview of overriding actions in JIRA. The full source for the example can be downloaded below. Feel free to add any suggestions or feedbacks. Have a blast!