>1:コレクションのiteratorメソッドが返すIteratorは毎回コピーを生成して返すのか。
Iteratorは別のもの。元になったCollectionがコピーされるかどうかはIteratorの実装次第。
ただしIterate中に構造変化が起こった場合は

>つまり、いくつかのスレッドが自分用のiteratorを得て、ぐるぐる回してもOKなのか?
NG.
ただし、CopyOnWriteArrayListなどはIteratorが生きている間もとの構造を維持する。

複数スレッドから使いたければCollections.synchronizedList()で同期化する。
同期化されていれば途中で構造が変更されたときにきちんとConcurrentModificationExceptionがスローされる。

>2:static変数であるオブジェクトの中で宣言されたコレクションクラス(包含関係になっている)から
>要素を取り出して(HashSetでもArrayListでもいいです)、得た要素に対して変更を加えても、コレクションの中の
>要素には変更が反映されません。

同期化されたコレクションなら構造が反映されれば「安全に」ConcurrentModificationExceptionがスローされる。