I understand that "essere" is used when the verb is intransitive, i.e. there is no direct object being done by the verb.
"I eat (a cake, an apple...)" is transitive, because the verb is acting directly on an object, and would take "avere". "I arrive" doesn't have a direct object. If you said "I arrive at the shop", you need a preposition ("at) to make it work, because the verb is intransitive and would take "essere".
(edit: although just because a verb is transitive/intransitive in English doesn't mean it also is in Italian, e.g. cercare)
Yes, essere is used by many intransitive verbs (including many verbs of motion) and all reflexive verbs.
There are some exceptions, such as camminare (to walk), which take avere, but it's a good rule of thumb.
On the other hand, all transitive verbs take avere.