For each collection, you can set 'wairForSync' to either 'true' or 'false'. If you set it to 'true', then the call to save, update or delete a document in that collection will wait until the O/S has reported that the change has been written to disk. As you wrote, the O/S or the hard-disk might be lying.
The same is true if you set 'waitForSync' to 'true' in a call of 'save', 'replace' and so on.
Each block has a checksum. If the server crashes while ArangoDB is writing a document, it will check on start-up, if the write was successful or not.