Price discrimination can theoretically exist only in monopolies or oligopolies. If a company offers the same goods at different prices, there should be arbitrage (buy cheap, sell higher) so that the price will adjust.
Most of the times, when there is price discrimination there is a catch in order to pay the lower price. The catch can include cross sales, sales at specific dates, other marketing campaigns (coupons etc). There are people that just want to go the shop and buy without trying to find a coupon and they are people that are willing to spend the extra time to find a coupon.
Regarding the ethics of the price discrimination, it really depends on the way that it is done and what exactly it involves. I would say that in most cases, it can be ethical.