1) It's a cache, not a datastore. You put objects in the cache for faster access, if they're not in the cache, you read it from your primary datastore, such as a database or whatever you have, and put them in the cache. When you update objects, you update them in your datastore, and in the cache. That way objects in your cache will always be up-to-date, or simply not cached yet.
2) Yes, we're running on that and it works perfectly. Make sure you get at least version 1.2.5 or later though.
3) What do you mean? For the server there is the protocol specs:
http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
For the clients, it depends on the client. You can find some documentation for my client here:
http://code.google.com/p/beitmemcached/wiki/Examples
/Henrik Schröder