Matlab will solve up to a 3rd order polynomial by default. To get an explicit result you have to specify a max degree, in your case 4. See: http://www.mathworks.nl/help/symbolic/solve.html
So:
solve(((a^(2)*b^4)/2)+2*c*a^(2)*b^(3)-(2-2*d+a^(2))*b^(2)-(4*c+2*c*a^(2)-4)*b+((a^(2)/2)+4*c-2*c^(2)*d-2),b, 'MaxDegree', 4)