-o, -onis is the native Latin declension. –on, -onis is not native Latin, so it is a morphological import from Greek.
So if it drops the -n, the word or name has been felt to be common or salient enough to be nativised as Latin. If it does not drop the -n, it is felt to be a Greek loanword, and is being spoken, as it were, with a Greek accent.
Apollo was a well established god in the Roman pantheon; in fact Wikipedia indicates he was already in Etruscan, as Apulu. So his name was assimilated into Latin, and dropped the -n. Orion was not a well established figure in Roman mythology; so his name stayed looking more like Greek.
Same story with famous vs not so famous Greeks. Plato, Crito, Zeno, but Euphorion, Solon, Philemon. And yes, it’s a very arbitrary dividing line, and accordingly you will find names with both endings: Euphorio or Euphorion, http://latinlexicon.org/definiti…
Of course, this only applies to the Greek –ōn, -ōnos declension (Latin -o, -onis); if it’s a different declension, Latin will stick with –on; eg Xenophon, -ontis.