You should read about what a regular expression is and how it works. Briefly, a regular expression can check if an input string matches what the regular expression expects. For instance, your regex might be something like this:
[0-9]+
Which means the input string must be one or any number of characters between zero and 9. When you use groups in your regex (those parenthesis), the regex engine will return the substring that matches the regex inside the group. Now in your regex, anything between those curly braces( {<ANYTHING HERE>} ) will be matched and returned as the result, as the first (note the first word here) group value. regexp_replace receives a column, a regular expression, and needs to know what to do with the return value of expression, which will be the 3rd element. Now what this \\[$1\\] means, is to take the result of first group (which would be <ANYTHING HERE> in our case), and wrap it around braces. [, ], {, } must be escaped using \\ because those are valid regular expression terms, which can define class or amount of a character.
dot (.) matches any character, and '*' means "any number of", so .* would mean "any number of any character".