Thank you Tim Moreland, this is really helpful.

In my case, I am interested, for each municipio, in the mean income of individuals according to their race.

Can you please tell me if I undesrtood well your reply and the documentation you advised me to read?

a) If I am solely interested in computing these means (ie. in point estimates) without making any statistical inference about them, then I just have to take care of weights and I don't need to bother with clusters, stratification, or special subpopulation estimation (because these latters only affect the standard errors of the point estimates).

b) If I am interested in statistical inference (eg. testing if the mean income of black people is statistically different from the one of white people in a given municipio A) then taking care of cluster and special subpopulation estimation become very important because I could otherwise obtain mistakenly some significant results (type I error). There's no stratification variable in IPUMS but this is less of a concern because not adjusting for it yields conservative standard errors (so the worse thing that could happen is a type II error). To summarize, for case b), I should write in Stata:

svyset serial [pweight=wtper], vce(linearized)

svy, subpop(muncipioA): mean inctot, over(race)

Have a nice day, thanks a lot.