Am I right in assuming that this is like Protobuf but just for JSON objects?
You can write Ion by hand (like JSON) and share it without a schema (unlike protobufs). There’s fewer ways to express values than YAML, but more data types.
Having S-exps is convenient for writing DSLs in a data language that’s easily readable from other languages.