Nice guide!
Just wanted to say that the final example can be simplified a bit. O.map and O.fromNullable can be replaced with a single function: O.fromNullable.
pipe(
foo,
O.fromNullable,
O.chain(O.fromNullableK(({bar}) => bar)),
O.chain(O.fromNullableK(({buzz}) => buzz))
)