Пока 64-битная DLL загружается отдельным 64-битным процессом, а вся связь между 32-битным процессом и 64-битной DLL происходит через слабосвязанные IPC-подобные механизмы, которые ОС может собирать, тогда да, вы можете сделать это.
Я сделал нечто подобное. 32-разрядному приложению требовалась пользовательская надстройка диспетчера очереди печати, реализованная в DLL. Приложение и надстройка спулера обменивались данными через механизмы IPC (в данном случае причудливый способ сказать временные файлы).
В 64-разрядных системах все в 32-разрядном приложении работало нормально, за исключением того, что диспетчер очереди печати отказывался загружать надстройку DLL, поскольку диспетчер очереди печати, конечно, был 64-разрядным процессом.
Решение было таким же простым, как перестройка только надстройки Spooler в 64-битной версии. Нет необходимости менять все 32-битное приложение.