This site Bugs Apple Loves might be a little unfair, but the iCloud photos part is good:
You took some photos. iCloud says ‘Uploading 847 items’. You wait. Next day: ‘Uploading 847 items’. Week later: ‘Uploading 847 items’. Is it stuck? Is it working? Is there an error? There’s no progress bar. No ETA.
In my experience, Apple tries to optimize when it syncs based on battery life or network or some other hidden criteria. In practice this just makes photo sync slow and unreliable.