Корутины похожи на потоки: они задают последовательность выполнения команд со своим стеком, своими переменными. Главное отличие корутин от потоков в том, что корутины умеют задерживать свое выполнение для того, чтобы дождаться результата от другой корутины.
Что это даёт Android-программисту? Как и любой синтаксический сахар - более читаемый код.