It has to do with the polarizability of the groups in the molecule. On a molecular level you can think of it as a lightwave "running into" the electron cloud of the molecule and losing a small amount of energy. Groups with more electrons on them tend to "absorb" the light energy a little bit more than groups with fewer electrons. When you change the energy of the light wave then you change the observed rotation because you change the frequency of the light. Essentially, you intercept the wave at a different part along the wave.
On a single molecule level ALL compounds (even achiral ones) will rotate plane polarized light, but if you have lots of molecules, then essentially all of the possible orientations of those molecules are populated equally. Imagine a molecule in one particular orientation, and then imagine flipping it upside down. The two orientations rotate plane polarized light differently on a single molecule, but in real systems with lots of molecules all of these orientations cancel each other out. If you have a chiral compound, however, some orientations are not accessible, since the chirality can't be changed (that is to say, the molecular orientations with the opposite enantiomer can't be accessed and can't cancel out the rotation caused by the enantiomer you do have).
As for why you get opposite rotations, it's just physics. If you have one molecule that changes light in one way, its mirror image with do the opposite thing. Imagine holding your left hand out, flat with the thumb facing out. Now suppose that a ball were to hit your hand right at the crook of your thumb so that it was deflected through the angle between your hand and thumb. Now imagine the exact same thing happened with your right hand. The ball would be deflected exactly the same in terms of energy, etc., but the trajectory would be in the opposite direction relative to the initial trajectory. The same thing happens with chiral molecules.