> (не хочется, чтобы DDoSом на веб-морду можно было положить демона)
Так если морда будет перенаправлять запросы на демона, не ограничивая их скорость, то демон ляжет раньше морды. Чтобы его нельзя было сломать так просто, надо ограничить число принимаемых в единицу времени запросов и число потоков (если используется многопоточность).
> Как именно лучше организовать взаимодействие между двумя этими серверами (RPC, Socket, что-то еще)?
Можно через HTTP/1.0 + JSON, например. Или бинарный протокол, если есть желание выжать максимум, но тогда надо демона переписать на Си.