에 (destination/static) and 에서 (action-location)
Korean uses two different particles for places, and which one you pick depends on the verb, not the noun. 에 marks where you go to, where someone or something is/exists, or when something happens. 에서 marks where an action takes place. 학교에 가요 = 'I go to school.' 학교에서 공부해요 = 'I study at school.' Same noun, different particle, totally different sentence type.
에 — destination and static location
Use 에 with verbs of motion (가다, 오다, 다니다) and verbs of existence (있다, 없다, 살다). Destination: 학교에 가요 ('I go to school'), 집에 와요 ('I come home'). Existence: 학교에 있어요 ('I'm at school'), 서울에 살아요 ('I live in Seoul'). It also marks time: 세 시에 만나요 ('let's meet at 3'), 월요일에 가요 ('I go on Monday').
에서 — action-location
Use 에서 with verbs of doing: studying, eating, working, watching, reading, talking, playing… 학교에서 공부해요 ('I study at school'), 식당에서 점심을 먹어요 ('I eat lunch at the restaurant'), 집에서 영화를 봐요 ('I watch a movie at home'). The action is happening inside / at that place, not arriving at it.
에서 also = 'from'
에서 has a second use: 'from' as the source of motion or origin. 학교에서 와요 ('I'm coming from school'), 한국에서 왔어요 ('I came from Korea / I'm from Korea'). The two readings are easy to keep apart in context, because the 'from' reading needs a motion-from verb (오다, 출발하다, 떠나다) and the 'at' reading uses an action verb.
Side-by-side examples
학교에 가요 vs. 학교에서 공부해요 — going to school vs. studying at school. 집에 있어요 vs. 집에서 자요 — am at home vs. sleep at home. 카페에 와요 vs. 카페에서 일해요 — come to the café vs. work at the café. The choice is automatic once you know whether the verb is motion/existence or action.
Other uses of 에 worth knowing
에 is also the time particle (세 시에 만나요), the price particle (한 개에 천 원 = '1,000 won apiece'), and appears with dative meanings ('to / for') for non-people: 꽃에 물을 줘요 ('I give water to the flower'). For people you'd use 에게 or 한테 instead — covered later.
