Update 2: Changing the orientation of labels based on sector positions:
ClearAll[cedF2]
cedF2[datafunc_: ChartElementDataFunction["Sector"]][{{t0_, t1_},
{r0_, r1_}}, y_, z___] := Module[{pos = If[-Pi/2 < (t0 + t1)/2 < Pi/2, Right, Left],
shift = If[-Pi/2 < (t0 + t1)/2 < Pi/2, Pi, 0]},
{datafunc[{{t0, t1}, {r0, r1}}, y, {}],
If[z === {}, {}, {Darker[Darker[Charting`ChartStyleInformation["Color"]]],
Text[z[[1]], (r0 - .1) {Cos[(t0 + t1)/2], Sin[(t0 + t1)/2]}, {pos, Center},
- (r0 - .0001) {Cos[(t0 + t1)/2 + shift], Sin[(t0 + t1)/2 + shift]}]}]}]
SectorChart[secDat3, ChartLayout -> "Grouped",
PerformanceGoal -> "Speed", SectorOrigin -> {Automatic, 20},
SectorSpacing -> {0, 0}, ImageSize -> 500,
BaseStyle -> {FontSize -> Scaled[.04]}, ChartElementFunction -> cedF2[]]

Update: A custom ChartElementFunction
to rotate the labels based on sector position:
ClearAll[cedF]
cedF[datafunc_: ChartElementDataFunction["Sector"]][{{t0_, t1_}, {r0_,
r1_}}, y_, z___] := {datafunc[{{t0, t1}, {r0, r1}}, y, {}],
Darker[Darker[Charting`ChartStyleInformation["Color"]]],
Text[z[[1]], (r0 - .1) {Cos[(t0 + t1)/2],
Sin[(t0 + t1)/2]}, {Left,
Center}, - (r0 - .0001) {Cos[(t0 + t1)/2], Sin[(t0 + t1)/2]}]};
cedF[datafunc_: ChartElementDataFunction["Sector"]][{{t0_, t1_}, {r0_,
r1_}}, y_, {}] := datafunc[{{t0, t1}, {r0, r1}}, y, {}]
As before, attach labels to the first dataset as metadata to be processed by cedF
:
secDat3 = secDat;
labels3 = Table["Label" <> ToString@x, {x, 1, size1}];
secDat3[[1]] = Thread[secDat3[[1]] -> labels3];
SectorChart[secDat3, ChartLayout -> "Grouped",
PerformanceGoal -> "Speed", SectorOrigin -> {Automatic, 20},
SectorSpacing -> {0, 0}, ImageSize -> 500,
BaseStyle -> {FontSize -> Scaled[.04]},
ChartElementFunction -> cedF[]]

SectorChart[secDat3, ChartLayout -> "Grouped",
PerformanceGoal -> "Speed", SectorOrigin -> {Automatic, 10},
SectorSpacing -> {0, 0}, ImageSize -> 500,
BaseStyle -> {FontSize -> Scaled[.04]},
ChartElementFunction -> cedF[ChartElementDataFunction["OscillatingSector",
"AngularFrequency" -> 20, "RadialAmplitude" -> 0.25]]]

Original answer:
For part (1) the question, a work-around: Wrap only the first data set with Labeled
. For part (2) TODO: modify this answer
secDat2 = secDat;
labels = Table[{Rotate[#, 90 Degree] &@("Label" <> ToString@x), "RadialInside"},
{x, 1, size1}];
secDat2[[1]] = Labeled[#, ## & @@ #2] & @@@ Transpose[{secDat2[[1]], labels}];
SectorChart[secDat2, ChartLayout -> "Grouped",
PerformanceGoal -> "Speed", SectorOrigin -> {Automatic, 20},
SectorSpacing -> {0, 0},
ChartLegends -> Placed[Table["Legend" <> ToString@x, {x, 1, size2}], Below]]
