Here are the differences, some of which have been covered:
money order: Issue amount limited in value, usually $1000 at banks and less at other issuers.
official check: unlimited issue amount.
money order: Payee and remitter information usually filled out by the purchaser at time of issue or later. Date and amount completed by issuer.
official check: All information must be completed by the issuer (bank) at time of issue. No blank checks here.
money order: Stop payments allowed for variety of reasons, ususally without posting a surety bond.
official check: Stop payment only allowed if check is lost, stolen or destroyed. Almost always requires a 3rd party surety bond and affadavit of loss before re-issue.
money order: If issuer goes out of business before item is negotiated, you’re generally SOL.
official check: Protected by FDIC/FSLIC.
money order: More commonly forged/altered than official checks.
While both become the obligation of a 3rd party issuer, cashiers checks are more highly regulated than money orders. Both are a highly safe method of payment, but a cashiers check is the pinnacle of security.