Контекст выполнения используется вообще чтобы управлять выполнением кодом, точнее отслеживать его корректно, но я не могу чет нормальное определение придумать)
А лексические окружения используются для контроля переменных и разных значений типа this, их видимости и доступа к ним