That is right. In the future, all the program/codes need to be tested throughly on the testnet before they can be released on the main net.
I think that is not sufficient. First of all, you can hardly test a contract for a year on a test net, because then it is much less hassle to go through the normal legal system. The idea was to make contracting "light quick and easy". Also, contracts can contain ideas, and agreements which are confidential until they are made. If you make them public before the deal is real, you lose a lot of competitive edge.
But most of all, if contracts run on a testnet, there will not be the same incentive to hack them than if they are for real. In fact, I would look at contracts running on test nets, try to find hacks into them, not reveal them until the contract runs for real and then attack it. The test net phase simply gives me more time to find a hack.
That is right. It is quite difficult to test the contracts on the test net. Hackers will not be interested. They have less incentive to do that.