когда dll создается из исходного кода в заданных пространствах имен a, b с функциями a :: open, b :: open, возникнет ли конфликт при вызове этих функций.
Нет, потому что имена функций, экспортируемые из DLL, являются искаженными именами C ++. Искаженные имена включают пространство имен, поэтому конфликта не будет.