When it works, it’s fine. I don’t use it for photos, music, or anything large, so contacts, notes, keychain, and calendars are it. I thought it would be handy to get info onto a new laptop.
The main problem I see is when it doesn’t work (your phone doesn’t sign in right, or whatever goes wrong), the default on the iphone seems to be to remove everything rather than keep what was already there until the next time the service is available. I don’t know if this is actually what’s happening, but the net result is I’ve had all my calendars, notes, passwords, and contacts just straight disappear. No “there was an error” message, no “did you mean to”, just gone. Makes the phone and texting system a pain to use without contacts. I consider the other stuff to be nice bonuses, but when the phone fails as a phone, that’s the real problem.
They always come back shortly, sometimes I have to manually turn the syncing back on in the settings, but it seems if all the information was on my phone before iCloud was even implemented, it should still be there. Why not just use the local copy? This seems to be how it works on my laptop, I honestly don’t know why it’s different for the phone.
So, for synching apple devices on the basics, it’s acceptable. Anything more, I’d look at dropbox or other similar services which are really outstanding and have completely changed how I store anything on my computers.