What and where should I study for competitive programming?
If your aiming for the IOI, the first step has to be figuring out how to get onto your country's delegation.  In the USA (where I am), that means USACO.  If not, then you will have to determine what that pathway is.  Every country has some method of determining delegates.
The next step would depend a lot on how those delegations are formed within your country.  You may have to join a team, and there will presumably be some sort of coach.  Most of your preparation and learning will probably focus on the competition used in your country.
And in terms of what to study, the competition itself looks to be very, very focused on algorithms.  Until you can find more specific resources to the competitions within your own nation, you could spend time practicing the older, published IOI problems and Project Euler problems, which seem similar in nature.
It's hard to be more specific than that without knowing your country of origin.
Good luck!!