В общем, как я понял: file-loader выгружает файлы в отдельную папку, и они загружаются на сайте при заходе. url-loader кодирует файлы, чтобы использовать их в виде url строки(грубо говоря). Таким образом загружаются только те файлы, которые непосредственно понадобятся в данный момент, чтобы тратилось меньше ресурсов.
Только вот почему везде написано, что нужно ему ставить лимит (в основном 10000 байт), чтобы загружать уже файлом при его превышении. Так же файл будет загружаться при заходе, не так ли?
base64 контент будет загружаться вместе с вашими скриптами, а файлы по необходимости.
По сути, url-loader нужен для сокращения времени загрузки мелких файлов, но если заинлайненного в url() контента будет слишком много, ваш бандл станет слишком тяжелым.