Rather subtle, I would say, especially for a person learning Polish as a foreign language.
"Chłopak" implies certain distance to a person, while "chłopiec" is more intimate. It may result from the boy's age (in the absence of other factors, I would say that "chłopiec" is younger than "chłopak"; the latter, let's say, from a teenager to a young male), but may also mean a negative attitude (If you say "Co to za chłopak?" referring to a boy you would normally refer to as "chłopiec" may mean that you dislike him or that he's done something wrong. On the other hand, you may use a phrase "co (to) za chłopak!" to express your admiration for his bravery, courage or grown-up behaviour higher than you would normally expect. If you say "chłopiec" about a teenager, it would imply that you treat him like a child, or that you are an old lady who treats all young males as if they were her own children (it may be a result of a shift of the word meaning throughout her lifetime, but it sounds this way anyway). On the other hand, "nasi chłopcy" is much more natural than "nasi chłopacy" when referring to a foottball team winning their games, soldiers ("Nasi chłopcy służą w Afganistanie", "Nasi chłopcy zginęli w obronie ojczyzny", etc), etc.
If you refer to a pre-school or younger boys you may also use "chłopczyk" rather than "chłopiec".