Will clarify that the only reason the one colt was weaned at 3 months was due to him pulling the mare down, she milks like a cow so puts a lot into her foals and he's a big colt.. By the time he was 3 months he was very independent, easy going attitude, eating grain and drinking water on his own, in fact he would eat his grain then push his dam away to get to hers, there were several times where I caught him putting himself between her and her feed bucket so she could not get to her grain, if she tried the little $&*% would pin his ears and kick at her till she finally gave up, then he'd eat for a while then nurse off of her and be done.. I decided it was time when he started the pinning ears/kicking at her to get her grain and she would get to the point where afterward when he would go to nurse she would kick and not allow him to do so.. So I pulled him off her, gave him a stall of his own and he's doing great, not a cry out of him for his mom and still has the laid back, easy going attitude..
On the other hand, last year I bought a mare with a filly at her side.. The filly was a good month to two months older than the foals born at our place.. I waited till the filly was 6-7 months to wean her as she was so attached to her dam and very timid.. I waited so she could spend time in the pasture with the other mares and foals, and so she had a buddy to be weaned with.. It worked out great as the more she interacted with the other babies and mares she became less dependent on her dam and timid, would run and play with the other foals and when someone would go out to the pasture she would approach us when the other foals did.. Weaning her with a buddy, she could still have that 'security blanket'.. She was sold a month after being weaned, and you wouldn't believe the filly that left that day was the same timid little filly we bought with her dam, she had done a complete 180, so I think the best thing we did for her was let her get a little more age and maturity on her before pulling her from her dam..