StringBuilders should be used when you want to create and manipulate a large string a lot.
Example:
StringBuilder.sb = new StringBuilder();
sb.Append("Pretend this is a really really really really long string");
sb.Insert(9, "that"); // adds 'that' to the string at char index 9
Response.Write(sb); // or Console.WriteLine(sb);
In terms of the performance difference, it can add up to quite a bit with arge strings. Each method in a regular string (like, Replace for instance) creates a new string in memory. Eg:
string z = "boo";
z = z.Replace("b", "m");
z = z.ToUpper();
This is actually 3 strings stored in the memory, compared to a StringBuilder,
StringBuilder z = new StringBuilder("boo");
z = z.Replace("b", "m");
This is 1 string in the memory.
It's not an issue with a smaller string like here, but if the string was for instance a thousand word block of text and you wanted to replace some words in it then it can add up to a fair amount of overhead.