To start with, I will work in 4 dimensions to accommodate a,b,c,d.
P = {a, b, c, d};
M = {{2, -1, 0, 1}, {-1, 1, 2, -1}};
The points of your 2D set are the linear transforms, of the form
M.P (* {2 a - b + d, -a + b + 2 c - d} *)
where P lies in some 4D set which is defined by $a+b+c+d=1$ and all positive, that is some polytope in 4D. Since you get your 2D points by a linear transform on the 4D points (M.P), and since the linear transform of a polytope is the convex hull of the transform of the extreme points of the polytope, your set will be the convex hull of the points M.P for all P being an extreme point of the 4D polytope.
Not, this 4D polytope is a simple one, you can get its extreme points by all combinations {a,b,c,d} of 0's and 1's that have a sum <= 1. You can generate all the combinations and then Select the right ones :
Flatten[Table[{a, b, c, d},
{a, 0, 1}, {b, 0, 1}, {c, 0, 1}, {d, 0, 1}], 3]
extremePoints4D = Select[%, Total[#] <= 1 &]
(* {{0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 1, 0}, {0, 1, 0, 0}, {1, 0, 0, 0}} *)
(yes, you could have guessed that just fine!)
Now, transform these to their 2D transforms :
Points2D = M.# & /@ extremePoints4D
(* {{0, 0}, {1, -1}, {0, 2}, {-1, 1}, {2, -1}} *)
(not all of these will end up extreme points of the 2D region but that's OK, we will take the convex hull and interior points do not matter)
Now, plot the convex hull :
<< ComputationalGeometry`
Graphics[Polygon[Points2D[[ConvexHull[Points2D]]]], Frame -> True]

Note: This approach needs to generate all extreme points of a polytope; in higher dimensions (4D -> nD) and with constraints not so simple as $a+b+c+d=1$, getting those extreme points gets trickier.
About the bounding box
@Silvia got me thinking about the bounding box of the 2D region. With the above method it is quite obvious (min and max x and y over extreme points) but I thought I would suggest another way to do this that has the advantage of working in higher dimensions.
The idea is to get the min and max x and y over all possible (x,y). Linear programming will do just that :
(*
Min x (or -x, y, -y)
subject to linear constraints
a + b + c + d = 1
2a - b - d -x = 0
-a + b + 2c - d - y = 0
0 <= a, b, c, d <= 1
-infinity < x, y < infinity
with a 6D vector {a,b,c,d,x,y}.
*)
obj = {{0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, -1, 0}, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, -1}};
(* obj will be used to min/max y/y *)
M = {{1, 1, 1, 1, 0, 0}, {2, -1, 0, 1, -1, 0}, {-1, 1, 2, -1, 0, -1}};
(* M.{a,b,c,d,x,y}=0 generates all 3 constraints *)
bounds = {{0, 1}, {0, 1}, {0, 1}, {0, 1}, {-Infinity, Infinity}, {-Infinity, Infinity}}
(* Now get the 4 solutions to min/max x/y: *)
sol = LinearProgramming[#, M, {{1, 0}, {0, 0}, {0, 0}}, bounds] & /@ obj
(* and keep the {x,y}'s
sol[[1 ;; 4, 5 ;; 6]]
(* all downhill from here *)
xmin = Min[points[[1 ;; 4, 1]]]
xmax = Max[points[[1 ;; 4, 1]]]
ymin = Min[points[[1 ;; 4, 2]]]
ymax = Max[points[[1 ;; 4, 2]]]
ListPlot[points, AxesOrigin -> {xmin - 1, ymin - 1},
Epilog -> {Orange, Line[{{xmin, ymin}, {xmax, ymin}, {xmax, ymax}, {xmin, ymax}, {xmin, ymin}}]}]
