に определяет место, где что-то или кто-то "существует". Действие при этом совершается в определенном порядке. Акцент идет на месте.
で определяет положение, где, происходит какой-то действие, т.е. события, ивенты, какая-то “движуха”. Иногда вы даже можете двигаться по одной и той же локации (местоположению). Акцент идет на действии. で: конструкция で+местоположения + глагол действия みせでかいものをする。 Я делаю покупки в этом ларьке (Акцент на действии. Именно покупки тут являются основным действием) きっさてんであさごはんをする) – Я завтракаю в кафе (не совсем важно где, важно, что завтракаю) ねる – спать, глагол не совсем активного действия. Поэтому японцы иногда используют で, а иногда – に во втором случае подчеркивается пассивность действия, и отрешенность от ситуации, т.к. акцент перемещается с действия, на место. Спать же в кровати часто ставится с に: ベッドにねる. どこでそのじけんのことをわかりましたか? – Откуда ты узнал об инциденте? (здесь также акцент на действии, узнавать, а не о месте, хоть вопрос и задается об источнике