17. Никогда не надо так ждать таски. В общем случае нужно перенаправить продолжение с помощью ContinueWith явно указав TaskScheduler (обычно хочется TaskScheduler.FromSynchronizationContext()).
Единственные исключения — консольные приложения у которых нет message loop (и не хочется его организовывать) и примеры того как не надо делать.
Про String и string дан неправильный ответ. String может означать что угодно, смотря какие using указаны в этом файле. string с маленькой буквы всегда определяется как System.String из BCL.
Еще немного каверзных вопросов по .NET и C#