This is only an observation, those functions do not need to be internally related at all.
So I'd say that:
FrontEnd`UndocumentedTestFEParserPacket[input_String, strip:(True|False)
]:={
  BoxData @ 
    If[strip, StripBoxes, Identity]  @ 
      FrontEnd`ReparseBoxStructurePacket[input]
, StandardForm
}
additionally FrontEnd`ReparseBoxStructurePacket can also take a box expression as input, while FrontEnd`UndocumentedTestFEParserPacket can only handle strings.
FrontEndExecute @  
  FrontEnd`ReparseBoxStructurePacket @
    RowBox[{"Test", "[", "Test", "[", "1", "]", "]"}]
(* Out[]:= RowBox[{"Test", "[", RowBox[{"Test", "[", "1", "]"}], "]"}] *)
Nice question btw, thanks.