All of the above is easily done with queries, either in Manifold 8 or in Radian.
Ie, number of objects of a certain type is just:
SELECT type, Count(*) FROM buildings GROUP BY (type)
Applying "but I want to know the number of objects of a certain type not just in general, but for each polygon" adds a second table and some conditions, possibly written as a join. Ie:
SELECT zones.name, buildings.type, Count(buildings.ID)
FROM buildings INNER JOIN zones ON Touches(zones.ID, buildings.ID)
GROUP BY zones.name, buildings.type
(The above queries are for Manifold 8, but only because I could make them more likely to work on random data by referring to the ID field. Queries for Radian are very similar.)
Have you used SQL before? If so, just dive right in, launch Radian, import / link your data, then open a command window and start writing queries, you are going to feel at home. If not, here is the starter help topic for Radian: Basics - Queries. There are plenty of resources teaching SQL on the web, and there is some initial time investment, but (a) it isn't big, what you are asking to do is pretty basic and does not go into the complex areas of SQL, and (b) it is very worthwhile, SQL is a very powerful tool used everywhere, not just in Manifold / Radian.
If you have issues figuring out how to compute anything specific, post an example file and the queries you tried and someone will help you.
You can also do the above using scripts, but SQL is simply easier, it has been designed to do what you are asking for.