Если lpMsgBuf уже является указателем на T-строку и если API ожидает, что указатель будет указывать непосредственно на T-строку, то вам вообще не следует использовать приведение. Другими словами, если тип данных уже правильный, то не стоит использовать ненужные приведения. Причина в том, что чрезмерное использование приведений может ослепить вас к ошибкам в то время, когда приведение закрывает компилятор.
Если lpMsgBuf уже является указателем на T-строку и если API ожидает указатель на указатель на T-строку, но API ожидает, что этот указатель на указатель будет приведен к указателю типа на T-строку (и API будет использовать его обратно), тогда вы делаете все правильно.
Если lpMsgBuf - это указатель на что-то другое (правильного типа), и API ожидает указатель на указатель на ваш тип, но API ожидает этих игр, то вы делаете все правильно.
Если lpMsgBuf является указателем на T-строку и если API ожидает указатель на T-строку, то, используя оператор &, вы создаете указатель на указатель на T-строку, чего API не делает ожидайте, и, используя приведение, вы говорите компилятору превратить этот указатель на указатель в указатель типа на T-строку, даже если значение все еще указывает на указатель. Таким образом, вы успешно закрыли компилятор, но по-прежнему доставляете результаты мусора вам или вашим клиентам.
Итак, без более подробной информации о том, какая страница MSDN говорит вам создать указатель на указатель и сыграть в кастинговые игры для какого API, мы не можем догадаться, правильно ли вы это делаете, неправильно ли вы читаете MSDN, или нет MSDN говорит вам писать плохой код.
Теперь, если приведение действительно правильное, то выбор используемого синтаксиса зависит от вашего стиля в остальной части вашей программы.