Expand roots into a polynomial
MATL, 29 bytes
ljU&quot;1@_hX+]tn:Pqv'+%gx^%g'wYD

Input is an array with the roots.
EDITS:

(May 20, 2016): the X+ function has been removed, as Y+ includes its functionality. So in the above code replace X+ by Y+.
(September 29, 2017): due to changes in the YD function, w in the above code should be removed.

The following link includes those changes.
Try it online!
Explanation
This applies repeated convolution with terms of the form [1, -r] where r is a root.
l          % push number 1
jU         % take input string. Convert to number array
&quot;          % for each root r
  1        %   push number 1
  @_       %   push -r
  h        %   concatenate horizontally
  X+       %   convolve. This gradually builds array of coefficients
]          % end for each
tn:Pq      % produce array [n-1,n-2,...,0], where n is the number of roots
v          % concatenate vertically with array of coefficients
'+%gx^%g'  % format string, sprintf-style
w          % swap
YD         % sprintf. Implicitly display