You have a population and you take a list of random people you want to contact from it. Now not everyone is going to respond that is in that list, you can get a random response from the random response list. There are near infinite random realizations that you could get of combinations of respondents from that list. Now, you can't do the direct enumeration since there are so many possible groups of realization of respondent from the list, so you can do an approximation. So take your random list and see how many times its characteristics are comparable to your actual respondents, when taking many many random samples from it, say 1,000,000.

PS, if it was a "random" sample, but the response rate was low it isn't biased because it is small, but it may not be representative¡¡!!!!!!!!!!!!!!!!!!!!!!!!!!!!¡!!!!!!!!!!!!!!

I can flip a coin five times and get all heads, my sample is too small to make generalizations if I have no more info. No biased just too small to provide info on the data generating function. When is it too small, but not biased, well when it doesn't represent the true population, but by chance that is a risk. Simulate to see how often that is a risk. Much like a sample size calculation, state what you what to compare and calculate how many people are needed to prove it if the hypothesis is true. Your hypothesis is that the sample has the sample average characteristics as the population, heck you could use a one-sample tests against constants to answer this question as well.