Объясните что происходит в этом участке JS кода?
Это сделано скорее всего для достижения асинхронности работы, просто в демонстрационных целях. Вместо того, чтоб делать ajax запрос на сервер, а до этого поднимать сервер, там используется таймаут, который работает с данными о продуктах. Лишь в целях демонстрации.
В этом коде происходит следующее: shop.getProducts запустит мутацию setProducts через 100 мс. Тут создается имитация обращения к удаленному сервису.