Why does ash release his pokemon?
Ash has only released three pokemon: A Butterfree (which is apparently making a return in Unova, I'm not sure if in a flashback or in person), Pidgeot, and a Lapras. Lapras was a mode of transportation for Ash during the Orange arc.
Remember that when he met Lapras, it was a young Lapras separated from its family, and Ash promised to help return it to its family. Until then, Lapras would help Ash any way it could, mainly by helping him across the Orange islands. Considering Lapras' fear of humans after being abused by trainers wanting it only for fighting, it is still close to ash for helping it recover. It was only actually used in roughly three battles. It does come back in the episode "Lapras of Luxury." Since Lapras was mainly a mode of Transportation, so there weren't a lot of situations in which it could be used well, Similar to Misty's Goldeen. He left Butterfree to go on with its own kind because he thought it would be happier that way.
He does not release Primeape. Like Squirtle, he officially put it in training, but because it is less popular and appealing than Squirtle, it has a much smaller chance of making a return. Pidgeot was in an awkward place since Charizard already provided a flying ability, not to mention that Noctowl, Swellow, Staraptor and Tranquill all fill in the exact same role, so there wasn't much of a point in keeping him. The writers knew this and didn't really know how to handle this, so they released him under the situation that it became the leader and guardian of a bunch of Pidgey. Ash thought their safety was more important that Pidgeot being called upon for battles.
Why didn't ash take Larvitar or Haunter?
They don't want to give Ash an overly powerful pokemon like Gengar or Tyranitar. That would not only eliminate a pokemon for him to be challenged by, but also takes out the balance aspect. Larvitar was left with its family. Would it have been right to take a it with him right after it was reunited with its mother (mind you it had been kidnapped by poachers) Haunter was left with Sabrina to keep her cheered up, as her constant training stripped her of her happiness and was what drove her into her psychological problem.
Why doesn't Ash evolve his pokemon?
Let's take this one by region. The core thing to remember about why Ash's pokemon evolve slower than other trainers is that Ash typically catches all the pokemon that will be in his party all at once, meaning all the training is split between six or more pokemon. His rivals usually catch and focus on one pokemon at a time, which is why Ash tends to fall behind midway through his journey, but catches up to defeat his rival by the pokemon league. His entire interaction with Paul in the Sinnoh arc demonstrates this quite well.
Only three of his pokemon are in their base form: Snivy, Oshawott, and Scraggy. When the majority of his team has already evolved, some of them twice, it's not fair to say he's not doing anything. Plus with over six pokemon in training, their battles are being stretched across several pokemon, so they will all evolve slower than if he trained them one at a time. He also brought in a Charizard and had Pikachu, (the former cannot evolve, and the latter requires a stone to evolve) who did not evolve, but are still two of his most powerful teammates.
Sinnoh had only two of Ash's Seven pokemon that didn't evolve--Gible and Buizel. Keep in mind the rest of them all started at their base forms, meaning that Ash alone went through seven evolutions here. His Gible didn't evovle, but remember that Dragon types take a very long time to evolve, and Ash caught gible Fairly late in the show, so it didn't have much time to evolve fully. Besides, Ash with a Garchomp in the pokemon league would have been a catch-22 for him. See "Why didn't ash take Larvitar or Haunter?" There's not much to say on Buizel, but again, it's unrealistic to say that Ash doesn't evolve any of his pokemon.
Corphish was Ash's only unevolved pokemon. It didn't see as much use as say Sceptile, and was one of Ash's overlooked pokemon.
Between these two regions, Ash has six unevolved pokemon: Totodile, Bayleef, Quilava, Bulbasaur, Squirtle, and Pikachu. Even then, Bayleef and Quilava evolved while with Ash. They just haven't evolved into their final forms.
Totodile- there's not much to explain why this one happened. But a happy jumping Totodile is far more appealing to children then an awkward crocodile thing that still has the same moves.
Bayleef/Quilava- Both of these have evolved, but not completely. Bayleef evolved rather quickly, but hasn't seen use lately. Quilava on the other hand didn't evolve until he was brought to Sinnoh briefly. Does that mean Ash just now got him at level 14? No. There aren't levels in the anime. Both of them were still very strong despite not being Meganium and Typhlosion. He didn't even use Bayleef as a wall/supporter like it's "supposed to be" in the games.
Bulbasaur- He had the choice to evolve in the episode "Bulbasaur's Mysterious Garden," but Bulbasaur chose not to. This was Bulbasaur's choice, not Ash's. It wanted to prove itself to the Ivysaur and Venusaur present that it wasn't weak, and didn't need to evolve to become strong. It's still taken out several pokemon that would be next to impossible to do in the video games. This proves that pokemon are able prevent their own evolution. The ones that don't want to evolve simply don't.
Squirtle- Remember that Squirtle was part of the Squirtle squad. It wouldn't have worked to have a Wartortle or a Blastoise as part of the gang. He still held his own as one of Ash's strongest water types without evolution.
Pikachu- Ash will not Evolve Pikachu. Simple as that. Pikachu is the mascot of the whole franchise. To do away with Pikachu is to do away with that. Pikachu, like Bulbasaur, chooses not to evolve for itself, not having anything to do with Ash. It lost to a Raichu in "Electric Shock Showdown," and was given a chance to evolve into a Raichu. Ash didn't force it to, and ultimately gave Pikachu the choice. It saw the thunderstone and refused to evolve, and later defeated Raichu. it's still one of Ash's strongest pokemon, and since this is the anime, it doesn't have to evolve to fit that spot.
Around 10 unevolved pokemon is hardly a majority, especially considering that these are all very strong pokemon in their own rights. Most of them made an active choice not to evolve as well, such as Bulbasaur. Remember that unless it is something like Pikachu's case, Ash cannot choose when his pokemon evolve. They do so whenever they're ready. It's marketing. Cooler/cuter pokemon= more money from more people getting drawn into the show. It doesn't seem to work like the games where they evolve after a set amount of experience is gained.
Why doesn't Ash catch a lot of pokemon?
"Gotta catch em all" was not Ash's goal. Ash's Goal was to become a pokemon master. The slogan was mainly put there as a ploy for people in the games. If he caught every pokemon he saw, then we'd have tons of pokemon we'd see for about one battle with no personality. Then people would complain that Pokemon doesn't get enough screen time and how the pokemon are so bland. It's another lose lose situation for Ash. The anime is meant to showcase the most common and popular pokemon in the game, which is why the three starter pokemon are always in the core cast. This is a basic marketing concept done by almost any mon franchise.