There is a difference, and it's not subtle: учиться is a non-perfective verb roughly corresponding to English "to be learning", while научиться is a perfective verb roughly corresponding to English "to have learnt". In the context of you question, "Она училась плавать в школе" means that she took swimming lessons at school, but does not imply that she actually can swim as a result. The original phrase unambiguously tells us that she can swim now.
"В школе" is correct, and means either "at school" or "inside the school building", depending on the context.
"На школе" could only be correct if the intended meaning is "on top of the school building".
Somehow I doubt you would use the latter expression too frequently.
Она научилась плавать: She learned (and still knows how) to swim. Она училась плавать (в детстве): She learned how to swim (as a child - implying she no longer knows how to really swim). Она учится плавать: She is learning how to swim. Она научится плавать: She will learn how to swim (focus on outcome/skill). Она будет учиться плавать этом летом: She will be learning how to swim this summer (i.e. taking lessons over the summer).
I believe this should be mostly correct. Please, native speakers, correct me if I messed something up or for further explanation.
That is indeed largely correct. The only issue I would have would be with
Она училась плавать (в детстве): She learned how to swim (as a child - implying she no longer knows how to really swim).
I'd say that "Она училась плавать (в детстве)" would tell me that she was taking lessons as a child but that did not result in her fully acquiring the skill. (Cody883261, interpretation sounds to me like she had learnt it, but then somehow forgot how to do it.) Or else, it can be used if you are simply listing activities she was involved in during her childhood: it focuses on the process and not the result (being able to swim).
In English, one could make a meaningful sentence (but with a different meaning) of She learned to swim in a school of fish. Is there a similar Russian way to express the concept of a large group of fish swimming together? In English there are dozens of different nouns used to describe groups of different types of animals, birds, etc. --is the situation the same in Russian?
We have a somewhat smaller amount of such words. For fish, it is стая or косяк. Wolves or birds also use стая. Косяк is for certain formations of birds (probably ,the same story for fish). Horses, cows, sheep or deer usually form стадо ("herd"). A group of deer or horses can also be табун.