If you don’t need it to be ‘dynamic’ (as it’s not actually loading anything in real time), then you don’t need it to be expression driven. It is certainly achievable with expressions, but if I were you I would just keyframe it.
Simplest way would be to create keyframes for one circle, going from 0% opacity to 100% and back again. Then copy and paste those keyframes onto each of your other circles, moving the start point for each subsequent layer’s keyframes forward by a frame or two (depending on the speed you’d like it to appear to rotate.
If you do this in a sub-comp, you can monkey around with the timing (perhaps making it look like it slows down slightly, then speeds up towards the end, so it’s more natural) using Time Remapping on the sub-comp.
Hope that helps! 🙂