If you do plain puts, you will get the same guarantees as if you were updating a simple concurrent hash map - these updates will be ordered in some undefined way and will happen one after another. Of course in the grid backups will be updated in a consistent manner, so you will have the same data on primary and backup nodes regardless of which of the two updates happened first.
Note that there are also other update primitives that give you better control over the cache contents, such as putIfAbsent, replace (compare-and-set, basically).
If you need even more fine-grained control over an update, you can use transactional cache, which allows you to lock a value for the update, so you can make sure that update will happen only if needed. Below is a pseudo-code for this case.