In general, we use "on" to describe something that is physically resting atop something else. We use "at" to describe something occupying a location. In a sense, "at" is more general.
If you said, "Bob is on his desk", people would normally understand you to mean that he is sitting or standing atop the desk.
"Bob is at his desk" is the more likely sentence. It means that he is in the location of his desk, probably sitting behind it.
Another similar word is "in", which means to be located inside something. "Bob is in his desk" would mean that someone has stuffed him into one of the drawers are something like that.
That said, there are conventions for how these prepositions are used that can be confusing.
We say that you are "in" a city or a country or some other large geographical region. Like, "Alice is in France."
For smaller areas, both "at" and "in" are acceptable and generally mean the same thing. "Carl is in the park." "Carl is at the park."
For buildings, we generally say "in" if you are inside the building. "David is in the Empire State Building." If you are outside the building -- like on the sidewalk in front of it or in the parking lot -- we say "at". But you can say "at" for someone inside the building. "David is at the Empire State Building" means he is in the vicinity, possibly inside, possibly outside.
If you are in a boat, we say you are "on" the body of water. "I'm in a fishing boat on the Atlantic Ocean".
You are "on" a planet. "The space probe is now on Mars."
Vehicles get complicated. You are "in" a car, but you are "on" a bus, ship, or airplane.