I can see where this would be very upsetting for you. But do you think he really meant to kill it? Children are so impulsive-even if he were aiming for it, he may not have known that he would actually kill it by throwing the stick. They also don't have the same concept of "alive" and "dead" that we do.
I would talk to him about how being careless and not following the rules hurts others. The duck is dead now and can't be brought back, but he can learn that he must be gentle. I am not sure how big a deal I would make. I mean, he needs to know that he cannot do that again, but I wouldn't want to make a 3 year old totally freak out and feel guilty. He is just a child, after all, and having disregard for his actions is normal at that age. If he were older, say 7 or 8, I would be inclined to take it much more seriously, since an older child has a better understanding of what they are doing and better impulse control.
I'm sorry this happened but I do think you have to put it in context with his age.
BTW, I killed a baby chick as a child by mistake, and I was much older than he was. I was bringing food to the compost and I threw in a big head of cabbage. I wasn't aiming for the chick, it got in the way and the cabbage rolled right over it. I was old enough to be horrified, but also old enough to have known that I should not have thrown the cabbage with the chickens about.
Just a story to illustrate that these things happen sometimes, and btw, I grew up to be a very calm and reasonable adult who has never even gotten a parking ticket!
Hang in there--