I think you should have a .appendTail in there for input strings that *don't* end in a vowel. The find / appendReplacement loop is basically what replaceAll does. You would use find / appendReplacement if you wanted to do something with the replacement which would be hard to do in a regular expression, say such as include the number of replacements so far, or a count of how many vowels of each kind you'd seen so far.
You should read - about 2,000 times, that's how long it took me - the API doc for java.util.regex.Pattern. The parentheses mark 'capturing groups'. There are 4 capturing groups, each one capturing one character each. The first one matches any character within the square brackets, so a h or a H. The whole pattern will only match Hell or hell. The '[hH]' capturing group is group number 1 in a match, 'e' is group number 2, 'l' is group number 3 and 'l' again is group number 4. It's the same as "([hH])ell" - because the e,l,l groups are literals, they only match themselves. The only useful group is number 1, because it will save the case of the 'h' at the start of the match.
I'm using this as replacement string with replace... methods, so they 'know' to interpret the $number as a reference to a capturing group in the matching pattern. The matching string (either "hell" or "Hell") will be replaced by "$1-e-l-l", because capturing groups 2, 3 and 4 are literals which only match one character. The $1 will match either h or H, so the matching text ("hell" or "Hell") will be replaced by "h-e-l-l" or "H-e-l-l". The case of the first character is captured by group number 1.
Pattern / regular expressions can be tricky to learn, but they're very powerful. Your program can be done in one line with a Pattern in Java, just as I could replace two strings ("Hell" in Hello and "hell" in shell) in one string in my program with one replaceAll invocation. It's good to learn how to do it with the individual methods that give you parts of strings and current match references in Pattern, but it's hard work compared to the way you would do it when you finally figure out what Pattern and Matcher are doing with regular expressions!