I only buy champions and skins when they go on sale. Is there a way to know what will go on sale ahead of time, or is it completely random?
No, they usually do a poll and ask the community what skins they would like to see on sale to benefit them and to profit and pocket the most money. A brilliant strategy, in my opinion.
As for champions, anytime they release a new champ, it will be free 2 weeks later in that rotation. That's the only thing that's set in stone with the champion rotation, otherwise they balance out bruisers, AP and AD carries, jungle and supports.