The question is a little underspecified, so I'll discuss two options.
SeedRandom[0];
coords = RandomReal[1, {6, 2}];
drawPolygon[coords_, color_] := {PointSize[Large], color, Point@coords,
FaceForm[Opacity[0.2]], EdgeForm[Directive[Thick, color]], Polygon@coords}
Graphics[drawPolygon[coords, Red]]

As suggested by @belisarius, the convex hull does not self-intersect, but can drop points:
Needs["ComputationalGeometry`"];
chCoords = coords[[ConvexHull[coords]]];
Graphics[drawPolygon[chCoords, Darker@Green]]

If you want to preserve all the points but remove self-intersections, you can try using the travelling salesman tour:
stCoords = coords[[Last@FindShortestTour[coords]]];
Graphics[drawPolygon[stCoords, Blue]]

This approach solves a strictly harder problem than just finding an intersection-free polygon, though, so maybe a simpler solution is possible.
Caveat: For large datasets, Mathematica finds a suboptimal tour, and it's possible that the tour self-intersects.
coords = RandomReal[{0, 1}, {200, 2}];
stCoords = coords[[Last@FindShortestTour[coords]]];
Graphics[drawPolygon[stCoords, Blue]]

To remove those intersections, we can use @ybeltukov's "deintersection" algorithm on the computed tour.
SignedArea[p1_, p2_, p3_] :=
0.5 (#1[[2]] #2[[1]] - #1[[1]] #2[[2]]) &[p2 - p1, p3 - p1];
IntersectionQ[p1_, p2_, p3_, p4_] :=
SignedArea[p1, p2, p3] SignedArea[p1, p2, p4] < 0 &&
SignedArea[p3, p4, p1] SignedArea[p3, p4, p2] < 0;
Deintersect[p_] :=
Append[p,
p[[1]]] //. {s1___, p1_, p2_, s2___, p3_, p4_, s3___} /;
IntersectionQ[p1, p2, p3, p4] :> ({s1, p1, p3,
Sequence @@ Reverse@{s2}, p2, p4, s3}) // Most;
dstCoords = Deintersect[stCoords];
Graphics[drawPolygon[dstCoords, Purple]]

One might ask, why not simply apply Deintersect
on the original coordinates? Well, one can, but it takes an extremely long time.
dCoords = Deintersect[coords];
Graphics[drawPolygon[dCoords, Orange]]

ConvexHull
indeed.. :) That's uber perfect. I still don't know what a convex hull is but at least I know what it does. $\endgroup$