Square brackets indicate that any of the characters inside the brackets can be used. This is called a character class.
[abc] would match "a", "b" or "c" but not "d".
You can also specify a range within a character class to indicate that any of the characters in the range should match.
[a-e] means the same as [abcde]
In your regular expression, [0-9A-Za-z._-] matches an alphanumeric character, period, underscore or hyphen. The three ranges 0-9, A-Z and a-z cover the numerals, lowercase and uppercase letters respectively.
Curly brackets indicate that the preceding character can be matched multiple times.
a{3,5} means "the character 'a', repeated 3-5 times".
I.e. it matches "aaa" and "aaaaa" but not "aa" or "aaaaaa".
We can combine the curly braces with the character class to indicate we want to match any character in the character class multiple times.
[ab]{0, 5} means "a mix of 'a' and 'b', between zero and five characters long"
I.e. it matches "aa", "bbb", "ababa" and "" but not "ababab" or "abc"
Combining these two concepts we can see how the regex matches the text description
[0-9A-Za-z._-]{0,100} means "a mix of 0-9, A-Z, a-z, ., _ and -, between zero and a hundred characters long"