Okay, here is a start on what you seem to be trying to do. I've shown the values of the Manipulate variables explicitly just to demonstrate a sort of validate as you go strategy. I built up each part of the Grid bit by bit, adding each new Manipulate variable only after getting the previous ones to work as I wanted. Once the graphic part of the display was to my liking, then I'd remove (or maybe just comment out) these pseudo-debugging elements.
With[
{xCoords = {28, 39, 48, 1, 4, 70, 86, 83, 14, 23},
yCoords = {36, 76, 41, 56, 39, 6, 83, 7, 59, 33}},
With[
{pts = Transpose[{xCoords, yCoords}]},
Manipulate[
Grid[
{{"pointSubRange", pointSubRange},
{"pointCount", Abs[Subtract @@ pointSubRange]},
{"allPts", pts},
{"selectedPts", Take[pts, pointSubRange]},
{"splineDegree", splineDegree},
{"groupedPoints", Partition[pts, UpTo[groupSize]]},
{"lineThickness", lineThickness},
{"aspectRatio", aspectRatio},
{"curveType", curveType},
{"splineClosedQ", splineClosedQ},
{"showPointsQ", showPointsQ},
{Graphics[{Thickness[lineThickness],
curveType[
Partition[Take[pts, pointSubRange], UpTo[groupSize]],
SplineDegree -> splineDegree, SplineClosed -> splineClosedQ],
Red, If[showPointsQ, Point[pts], Nothing]}],
SpanFromLeft}}],
{pointSubRange, 1, Length@pts, 1, ControlType -> IntervalSlider},
{splineDegree, 1, Length@pts, 1},
{groupSize, 2, Length@pts, 1},
{lineThickness, 0.005, 0.05},
{aspectRatio, .1, 10, .1},
{curveType, {BSplineCurve, BezierCurve}},
{splineClosedQ, {True, False}},
{showPointsQ, {True, False}}]]]