I think the difference between "мальчик" and "парень" is the same as between English words "a boy" and "a guy". Basically, if he is under thirteen, he is a "мальчик", after that he is a "парень". Although sometimes people also can refer to young men as "мальчики", just like in English people can call them "boys".