So Gohan was a crybaby cause he never trained and he dont liked fight. His mother learned him all of these things( to dont like fight, to srudy, to go to school etc.).Goten and Trunks were borned in a time of war and they've trained and learned to be a SSJ from 4 or 5 years.Thats the diference. I hope i helped u xD.
Because he was 4 and was put in many scary situations when he didn't know how to fight or even take care of himself, and as far as he knew Piccolo was a villain. He wasn't a crybaby, he was having a normal kid response.