Очень много нюансов. Количество рабочих потоков зависит от железки и ограничивается ее производительностью. Если нужна высокая производительность, то стоит задуматься над уходом от modbus, он не очень производительный протокол.
Для того, чтобы прочитать содержимое dll файла, его необходимо открывать как бинарный файл, а не как текстовый. Полученный массив байт уже можно будет интерпретировать как текст в нужной кодировке.
Да, если интересуетесь математикой, начните с линейной алгебры, с векторов и матриц. Например, вот по этому учебнику или этому. И обзательно решайте задачи, потому как теория без практики не усвоится.