Как реализуется такое?
1. Кривые секции делаются применением transform: skew в одну сторону для блока и в другую для контента.
2. Анимации - меняем transform: translateX (я бы склонился к тому, чтобы делать это не на CSS,  а на JS, прикрутив anime.js, но это дело вкуса).
3. Дальше аккуратно добавляются обертки с overflow: hidden, чтобы левая (с текстом) и правая (с картинками) стороны существовали отдельно друг от друга и не нужно было шаманить с z-index.
4. Скролл тут - чисто условное понятие, скорее есть несколько состояний компонента (у каждого из них свой набор трансформаций для элементов) и на скролл вешается обработчик, который переключает компонент между ними.
5. Главный вопрос "а как это адаптировать?" нужно обсуждать с дизайнером.
Вдогонку к предыдущему ответу: animejs.com
Отличная библиотека для анимаций.