"At" is just a general word indicating position, similar to 在. Unlike 在, 'at' cannot be a verb.
"On" and "in" are more specific. "On" decribes something that's on the outer surface of something and "in" describes something that's inside a 2D or 3D area or space. When describing location, you can think of "in" as short for "inside".
"In" corresponds to "在...里" and "on" corresponds to "在...上".
So for example you could say "at the shops" regardless of whether the shops are indoors or outdoors, but you can only say "in the shops" if the shops are indoors. It has nothing to do with how big the shops are. You can usually apply the same logic to other places when describing a location.
They don't always translate as you'd expect though. The most common example I can think of is that we often think of places with borders (like countries, cities, forests, deserts, fields etc.) as an area rather than a single location, so we use "in".
When it comes to abstract nouns, you often just have to know which preposition to use (you might be able to figure it out if you think about it, but it may not be intuitive). Some verbs take a specific preposition and you just have to memorise these individually, especially when it comes to phrasal verbs. Some phrasal verbs are derived from directional complements and you might be able to figure these out when you see them, but these are the exception and most of the time this won't work. When it comes to telling the time, you just have to memorise what prepositions to use in different situations and with different words.