Great question! Here's how I understand them:
The most general of the three. Basic "hard/difficult to do ～" meaning.
You can see that it comes from
辛【つら】い which can mean "difficult" or "painful". So
～づらい is usually a more subjective meaning, whereas
～にくい is usually more objective. Also,
～づらい is limited to actions that are intentional.
Very difficult to do. "Virtually impossible". The most expressive of the difficulty.
So I would say that
(～にくい <=> ～づらい) <<< ～がたい. Also notice that
～がたい have the same kanji. In practice, I don't think they're ever written in kanji, but if you were to see it, I don't know if even the sentence context would help you know which one it was.
2) What is the difference (and are all 3 acceptable?) between:
Yes, they would all be acceptable, but would be used in different scenarios/contexts according to the definitions (exercise left to the reader).
UPDATE -- According to the PDF posted by @Derek Schaab below,
分かりがたい is not acceptable because
分かる is not an 意志動詞. However,
理解しがたい is acceptable in its place.