1.) For the "create branch directly in stash", you can have 1 job triggered with Git SCM strategy “inverse” with “master” (meaning: to trigger only when the new branch or commits are pushed to any branch except “master”)
2.) For the “create pull request in stash”, you need the Stash Pull Request Plugin.
3.) For the “merge to master”, you can have another job triggered by gitCommit hook triggered only or SCM polling with commit is going to “master”