On eNotes, we request that you ask one question per post. Therefore, I will answer your first question. In my view, it is not ethical to impose liability retroactively. People need to be held liable for actions that they knew (or should have known) to be illegal when they did them. It is wrong to change the rules on people and then to make the rules apply to things that have already been done.
One thing that shows that this is unethical is the fact that this practice is essentially banned in the Constitution of the United States. The Constitution states, in Article I, Section 9, that Congress cannot pass ex post facto laws. In the next section, the Constitution says that the states may not pass these laws. At this point, the states were allowed to do things like abridging the freedom of speech, but they were not allowed to make ex post facto laws. This implies that the people who wrote the Constitution felt that ex post facto laws were very undesirable. This is evidence that they could be unethical.
We can also see that such laws are unethical simply by thinking about them. Imagine that I tell you that a grade of 60% will pass my class. You base your planning on that promise. When the time comes to give final grades, I decide that it is too easy to get a 60% and I fail you even though you got a 70%. That would clearly be unfair to you and unethical on my part.
From this, we can see that there are very strong arguments for the idea that it is unethical to pass laws that impose liability retroactively. People should not be punished for actions that were legal at the time that the people took them.