I agree with some of the points (like ambiguous icons and vague error messages), but not all of them. ‘If you are an X, then you have to fill in Y and Z. If you are not an X, please only fill in Z, unless Z=1, then you should fill Y too.’ This could be simplified considerably: "Fill in Z. If you are X or Z=1, fill in Y." Although I'm not surprised that refactoring boolean expressions is something that a lot of people…
Absolutely! I have had to program date-related code, and I am familiar with the differences between US and European date formats, and I have never heard of ISO 8601 before today.
The average person from the US will assume that 2015-04-03 is March 4th, 2015, while a typical person from Europe will assume it's April 3rd, 2015. You're still thinking in the context of a computer programmer, not the context of a user.