What you could do is to create a buffer around those points, and then run a intersection operation between the newly created buffer polygons and your zip codes polygons.
your zip codes polygons are already grouping the information you are after. In other word the value you will get is valid ONLY when your buffer includes entire zip codes polygons.
Anything that has a partial overlap cannot be handle property because you don't know how the actual population is distributed within the single zip code (e.g. is that equally distributed? only in the west-most part? etc.), and therefore how many people there are in your intersection.
You could try to estimate it, but the truth is that anything you will get is wrong.
If you get hold of household level information (points) that you will be able to achieve a valid result by using the exact same approach I described at the beginning