I think "Why does this chord progression work" is a bit misguided question to begin with. I guess you're really asking for ways to see the chords so that you can relate their functions here to other chord progressions and songs you're familiar with.
Albrecht already basically said it - why does anything "work", the chords are triads built on scale degrees and they often just work. It's more like, it's harder to come up with a combination of those blocks that does not work at all and cannot be used in any sensible melody. But I'll try a different approach.
The "I II III" etc. Roman numerals system is one way to analyze chord progressions, but sometimes if the song lingers ambivalently somewhere between related minor and major keys, it might not be the most intuitive choice. Another way is to look at the chords built on scale degrees as interleaved minor and major keys. The keys are so closely related, they're like siamese twins, "major side" and "minor side". Take C major and A minor for example.
- C : major side tonic
- Dm : minor side subdominant
- Em (or E7) : minor side dominant
- F : major side subdominant
- G (or G7) : major side dominant
- Am : minor side tonic
- Bdim : dual-function chord, can work as both the major side G7 or minor side Dm
Ok. The chord progression in your original question is:
| Am | C | G | Am G | (repeat)
Let's transform it to this:
| C | G | Em | Am G | (repeat)
In this modified version we can see that it's divided between major side C - G and minor side Em - Am. And then the glue chord G at the end which steps from the minor side back to the major side.
In the original, the major and minor sides are just intertwined more tightly.