“Receive Only” means that the device doesn’t make the changes to files made on this device available to the swarm. That, and only that.
So, say you have your setup. Device A adds files foo, bar, and baz while B and C are online, and D is offline. B and C become aware of this and start syncing: B gets foo, C gets bar, and then A gets offline so they don’t get baz. But now B is aware that there should be bar and baz, and C has exactly the copy of bar B needs, so B gets it from C. However, foo gets changed on B, and qux gets added. B doesn’t send the changes it made to foo, neither it tells anyone about qux, but B no longer has the version of foo that C needs, so C can’t get foo from B.
Now D comes online. It gets bar from either B or C, and becomes aware of foo and baz that neither of them has (well, B does, but it’s the wrong version), so D knows (and shows you in the interface) that it’s not completely synced.
B and C go offline, A comes online, D gets foo and baz and is now completely synced.
A goes offline again, B and C go online. They now know (from D) that they can get correct versions of foo and baz, and C does so; now C is in sync with the swarm, too. B gets baz, too, but doesn’t get foo, because it has a newer local version.
Now B shows you that it has local changes (new foo and qux that it never told anyone else about). If you (the user) press the “Revert local changes” button on B, it will re-download the “canonical” version of foo from anybody who has it, and remove qux, so that it becomes in sync with the swarm, too.