まず.NET前提とお断り
EXEファイルは基本的にスタートアップしか作成しません。
x86, x64の切り替えや、入り口を増やすときにEXEへの参照はマニフェストファイルの問題もありやってはいけないためです。
DLLはまず基本的に以下の区切りで分割します。
データセット、業務機能無し標準、業務標準、UI
参照を許す許さないの方向などは自明なのであえて書きませんが、双方向参照にはならないように切るのは当然です。
その他の外部モジュール。たとえば指紋認証モジュールがあればそれのラッパクラス群は単独でDLLにしておきます。
後で差し替えられるためという事もありますが、x86しか動かないモジュールはx86にしておくという事も必要な対策です。
UIは基本的に1アセンブリで作成します。サブシステム単位で横割りすると、共通的な使い回しが聞かなくなる可能性があります。
ただここは難しいところですが・・・
1画面1DLLなんて作りはあり得ないことだけは確かで、1画面1EXEなんてあり得ません。