Diferença entre StringBuilder e StringBuffer

Qual é a principal diferença entre StringBuffer e StringBuilder? Há algum problema de desempenho ao decidir sobre qualquer um destes?