The AddRange method copies all the items found in another enumerable. The original list named str2 can be changed and even be collected and it will not affect the contents of str1 after the call to AddRange.
In fact, the AddRange is very similar to:
foreach(var value in str2)
str1.Add(value);
But even if it is very similar, it is actually faster in many situations as it can do a single validation/inner array resize for all the items that will be added while the Add will do those validations per call.