As you wrote it, there is no actual difference between the two examples. But the brackets allow you to apply post-logic to the entire group of characters (for example, as another poster used as an example, {2} will subsequently indicate that the string "hello" is typed twice in a row without anything in between - hellohello Parantheses also allows you to use "or" statements - "/ (hello | goodbye) /" will match EITHER hi or goodbye.
The most powerful of them is extracting data from a row, and not just combining them, it allows you to pull data from a row and do what you want with it.
eg. in php if you did
preg_replace( "/hello (.+)/i", "hello how are you?", $holder );`
Then $ holder [1] will contain ALL the text after "hello", which in this case will be "how are you?"
source share