1)
имя корутины нужно только для дебага
2) никакого конструктора лонча нет, это просто функция на CoroutineScope. Разницы между данными примерами нет. Передать диспатчер можно в случае, если ты хочешь лончить в другой диспатчер.
3) это вроде повтор второго вопроса. Разверну немного. Если в CoroutineScope передать диспатчер(D), то все лончи без дополнительных диспатчеров будут происходить на диспатчере D. A если не передавать, то все такие лончи будут происходить на Dispatchers.Default, то есть для андроида - на диспатчере, у которого несколько потоков, и на котором можно выполнять тяжёлые вычисления.
Лончи, в которые передан диспатчер, будут выполнены на этом диспатчере.
Как-то так. Это на самом деле сложная и запутанная тема. За внешней простотой скрывается очень сложная машинерия. Ты пока вскрыл довольно простые вещи.