Что лучше использовать #include или LoadLibrary?
Вопрос, на самом деле, заключается не в выборе межу LoadLibrary и #include, а в выборе между явным и неявным связыванием.

При неявном связывании компоновщик добавляет в PE-секцию импорта дополнительный блок импорта конкретно указанной библиотеки. Этот блок обрабатывается загрузчиком PE в момент подготовки к запуску процесса. Эта информация тебе уже должна быть знакома. К моменту передачи управления в точку входа процесса все неявно связанные библиотеки уже загружены и готовы к работе. Код процесса не нуждается в явном управлении загрузкой таких библиотек.

Явное связывание выполняется полностью кодом процесса, для чего и применяется набор функций для работы с библиотеками. Явное связывание - это большая рутина. Но иногда без этой рутины никак.
Поиск динамических библиотек при работе LoadLibrary[?] осуществляется в соответствии с определенным порядком. При этом, путями для поиска динамических библиотек можно управлять в ручном режиме, добавляя новые или замещая имеющиеся пути поиска.

Директива препроцессора #include[?] лишь косвенно относится к вопросу. На самом деле к вопросу относится директива #pragma comment( lib )[?].
Прагма работает только для cl - компилятора от Microsoft. Подключаемая таким образом статическая библиотека должна находиться в перечисленных Library Path, в настройках сборки проекта. Эта прагма является альтернативой прямого указания статической библиотеки в настройках сборки проекта.
Эту директиву любят использовать в сторонних заголовках,  код для которых поставляется только в бинарном виде, в статических или динамических библиотеках. Вместе с динамической библиотекой такого решения поставляется и библиотека статическая, в которой находятся инструкции для неявного связывания с динамической библиотекой. Результатом работы #pragma comment( lib ) с такой статической библиотекой будет неявное связывание твоего кода с указанной динамической библиотекой.

Размер PE ощутимо растет при компоновке из статических библиотек.
Явное и неявное связывание слабо влияют на размер PE, но явное связывание усложняет жизнь разработчика, т.к. поддерживать загрузку интерфейса библиотеки разработчику придется самому.
#include - директива предпроцессора компилятора, она "срабатывает" когда вы компилируете свой исходный код.
LoadLibrary - это функция api windows, которая подгружает DLL. Соответственно "срабатывает" когда уже откомпилированный экзешник запущен. DLL - это уже откомпилированная библиотека - она должна лежать где-то по PATH.
2) Насколько я знаю - нет (что там в 8,10,2016 - хз, я уже давно на линуксе)
3) вообще не понял, извините
4) Еще раз - #include - это не "библиотека", хотя конечно в нее можно запузырить весь код, но imho лучше так не делать. В инклюдах должны жить ОБЪЯВЛЕНИЯ, а сам код в .cpp
5) опять не понял.