Какое внешнее лексическое окружение у анонимной функции, создаваемой при вызове другой функции в качестве ее аргумента?
такое же как у создаваемой в любых других условиях. например при `const x=() => {}` факт наличия вызова другой функции не играет никакой роли для привязки лексического окружения, в этом его смысл. так как функция стрелочная, this привяжется вместе со всем остальным контекстом.
Во втором примере у вас нет стрелочных функций, поэтому this никуда не привязывается и определяется контекстом вызова sayHello, остальные переменные, если они будут - привязываются по общему принципу замыканий - лексического контекста
const x=1
console.log(this) //некий объект A
doSomething( () => console.log(this, x))// this привязан, равен A, x привязан равен 1
doSomething(function () { console.log(this, x)}) //this не привязан значение зависит от кода doSomething, x все так же привязан, равен 1