It is unclear whether the checklist reflects the total number of boxes checked or the position of the boxes. For example if you only has the second box checked do you want to see [1/2] or [2/2]?
Having said that here is something quick to try:
x = {False, False};
CellPrint@
TextCell["Tasks", "Subsection", ShowStringCharacters -> False]
CellPrint@
TextCell[Text@
Row[{Dynamic@Row[{"[", Total@Boole@x, "/", Length[x], "]"}],
"Checklist"}, Spacer[5]], "Item", ShowStringCharacters -> False]
CellPrint@
TextCell[Text@Row[{Checkbox[Dynamic[x[[1]]]], "task a"}, Spacer[5]],
"Subitem", ShowStringCharacters -> False]
CellPrint@
TextCell[Text@Row[{Checkbox[Dynamic[x[[2]]]], "task b"}, Spacer[5]],
"Subitem", ShowStringCharacters -> False]

If you want to make this part of the cell dingbat rather than in the actual cell then:
CellPrint@
TextCell[Text@Row[{"Checklist"}, Spacer[5]], "Item",
ShowStringCharacters -> False,
CellDingbat ->
ToBoxes@Text@
Row[{Style["\[FilledSmallSquare]", Alignment -> Baseline,
RGBColor[0.8, 0.043, 0.008]],
Dynamic@Row[{"[", Total@Boole@x, "/", Length[x], "]"}]}]]
...but I think it is formatted better as is.
Edit
chewFood[numberOfCheckBoxes_] := Module[{x},
x = ConstantArray[False, numberOfCheckBoxes];
CellPrint@
TextCell["Tasks", "Subsection", ShowStringCharacters -> False];
CellPrint@
TextCell[
Text@Row[{Dynamic@Row[{"[", Total@Boole@x, "/", Length[x], "]"}],
"Checklist"}, Spacer[5]], "Item",
ShowStringCharacters -> False];
CellPrint@
TextCell[
Text@Row[{Checkbox[Dynamic[x[[#]]]],
"task " <> CharacterRange["a", "z"][[#]]}, Spacer[5]],
"Subitem", ShowStringCharacters -> False,
ShowGroupOpener -> False] & /@ Range[numberOfCheckBoxes];
]
