まず ImageExportSettings() ですが、 ImageExportSettings クラスのインスタンスを
作成するための処理です。( ImageExportSettings は QgsLayoutExporter の配下にあり、
名前解決のため QgsLayoutExporter を記述していますが、本質的には関係ありません)
ですので
img_settings = QgsLayoutExporter.ImageExportSettings()
は、 ImageExportSettings インスタンスを作成して img_settings という変数に代入する処理です。
img_settings.dpi = 512
は、 img_settings に格納されている ImageExportSettings インスタンスの dpi という名前の
メンバ変数(プロパティ)に512という数値を代入しています。
設計の考え方にもよりますが、 ImageExportSettings は、出力時の設定をまとめるための
いれもので、メンバに値を代入したからといって、命令という意味合いはありません。
もちろん、たとえば( QGIS にはありませんが) mapCanvas.setDpi() のようなメソッドがあったとして、
メソッド実行のタイミングで新しい DPI 値を書き換えるとともに新しい値に従い再描画する。
といった考えももちろん可能性としてはありえます。
ただ、ファイル出力という処理を行うにあたってのパラメータですので、もっと言ってしまえば
dpi = 512
exportMetadata = True
generateWorldFile = True
exporter.exportToImage("file/to/path", dpi, exportMetadata, generateWorldFile)
のように個別に引数として与えてもいいものです。