I want to point out why fundamental groups are defined for loops, and not path homotopy classes. This is something that Munkres’ Topology does not do a good job of explaining.
Munkres says that we cannot define groups on path homotopy classes because for some pair and , may not be defined. This is because it is possible that .
This seems like a bit of an arbitrary requirement to me. Although one can clearly see the benefits of defining only when , this can be worked around. For starters, if the path homotopy class between and is , one could define as . Obviously this would require the axiom of choice if there are multiple path homotopy classes between and , but I still think this can be worked around.
The reason why fundamental groups are defined for loops is that there is a unique identity and inverse for every element (path homotopy class). For example, if is a path from to , then . Clearly . However for a loop, the identity is unique- namely , where is the point where the oop starts and ends.
The same argument works for inverses.