A bounce is basically done after a collision. Basically the steps are:
1. check for collision
2. resolve the collision by moving the object out of the other so it's just touching
3. find the angle of the edge of the object where the object's touch. This is the collision normal.
4. using the normal calculate the new velocities. This can be done with the angleOfMotion and the normal angle, or with the xy components and some vector math.
2 and 3 are the more involved ones. The simplest for 2 would be to just move the object backwards till it's not colliding. Calculating the normal with 3 can either be done with detector sprites to get a good approximation or you can do some math with the object's geometry (typically polygon or circle) and calculate a exact normal. Another way to handle both is to use SAT (separating axis theorem).