Let's build this up incrementally. We can easily start with the circle:
Graphics[{Circle[]}]
Now we need some "spokes". CirclePoints is a nice function to generate a specified number of points on the unit circle, but they aren't positioned in the way we want them here. We could rotate them, or just generate points ourselves. Looking ahead, we might want to do this for both the spokes and the triangle vertices, so let's write a function (there are many ways to do this, e.g. you might prefer Table):
NormCirclePoints[n_Integer] := NormCirclePoints[n, 1];
NormCirclePoints[n_Integer, radius_] := Most@Array[radius {Cos@#, Sin@#} &, 1 + n, {0, 2 Pi}]
To get spokes, we need to pair each of these points with the circle's center. We also need to wrap Line around the pair. One way to do this is with Outer, and I like making this another function:
CircleSpokes[n_Integer] := Flatten@Outer[Line@*List, {{0, 0}}, NormCirclePoints[n], 1]
Now we can see what we've got so far:
Graphics[{Circle[], CircleSpokes[12]}]
Pretty easy to use what we've got to add the triangle:
Graphics[{Circle[], CircleSpokes[12], Line[NormCirclePoints[3, .5]]}]
Ooops, we need to close the triangle. Could just duplicate the first element at the end, which we can do with Append, but we need to reference the list of points, so at this point, I might start adding in variables:
With[
{spokes = CircleSpokes[12], vertices = NormCirclePoints[3, .5]},
Graphics[{Circle[], spokes, Line[Append[vertices, First@vertices]]}]]
Some of our spokes need to be arrows. We can replace certain Lines with Arrows using MapAt:
With[
{spokes = CircleSpokes[12], vertices = NormCirclePoints[3, .5]},
With[
{enhancedSpokes = MapAt[Apply[Arrow], spokes, {{1}, {2}, {4}, {6}}]},
Graphics[{Circle[], enhancedSpokes,
Line[Append[vertices, First@vertices]]}]]]
Now we need to add labels. We want the outer labels aligned with the spokes, so let's "over-specify" them a bit:
Thread[
Text[
{x, e, Subscript[\[Sigma], f], d, Null, f, Subscript[\[Sigma], d], Null, Null, Null, Subscript[\[Sigma], e], Null},
NormCirclePoints[12, 1.1]]]
We can add this to our Graphics:
With[
{spokes = CircleSpokes[12], vertices = NormCirclePoints[3, .5]},
With[
{enhancedSpokes = MapAt[Apply[Arrow], spokes, {{1}, {2}, {4}, {6}}],
spokeLabels =
Thread[
Text[{x, e, Subscript[\[Sigma], f], d, Null, f,
Subscript[\[Sigma], d], Null, Null, Null,
Subscript[\[Sigma], e], Null}, NormCirclePoints[12, 1.1]]]},
Graphics[{Circle[], enhancedSpokes,
Line[Append[vertices, First@vertices]], spokeLabels}]]]
At this point, I'll just jump to the end. We need to add in the labels for the triangle and add a label for the whole diagram:
With[
{spokes = CircleSpokes[12], vertices = NormCirclePoints[3, .5]},
With[
{enhancedSpokes = MapAt[Apply[Arrow], spokes, {{1}, {2}, {4}, {6}}],
spokeLabels =
Thread[
Text[{x, e, Subscript[\[Sigma], f], d, Null, f,
Subscript[\[Sigma], d], Null, Null, Null,
Subscript[\[Sigma], e], Null}, NormCirclePoints[12, 1.1]]],
triangleInnerLabels =
Thread[Text[{a, b, c}, .8 vertices, Background -> White]],
triangleOuterLabels =
Thread[
Text[{"A", "B", "C"}, RotationTransform[-.1][1.1 vertices],
Background -> White]]},
Labeled[
Graphics[{Circle[], enhancedSpokes,
Line[Append[vertices, First@vertices]], spokeLabels,
triangleInnerLabels, triangleOuterLabels}], "(a)"]]]
The label "C" is in a different position, and I have added no styling, so depending on your need for exact fidelity, there may be more work to do here.