Hi,
so I have no idea how rendering works, but I can help you with 3.
You first need to know, that if a ray hits something, it will reflect with the negative angle. So if you have a plane and 0 degrees are exactly a line towards the plane and you shoot a ray with -30 degrees (so a little bit from the left towards the center of the plane) it will reflect with 30 degrees, if you shoot a ray from 0 degrees (so exactly towards the plane) it will reflect with -0 (the same as 0) degrees, if you shoot a ray 70 degrees (so from very right to the middle of the plane) it will reflect with -70 (so to the left)
But now you have a cube and not a plane. If you shoot a ray towards one side of a cube the angle could be 0, 90, 180 or 270 degrees. What you need to do is get the side the arrow hits the block and then subtract 0, 90, 180 or 270 degrees. I'm not sure, but I think north you don't need to subtract (so basically 0). The other sides you need to try. Then, if you have subtracted, you negate the value (this is this -70 to 70, 50 to -50) and add it twice to the rotation of the arrow (not the subtracted). This is your end rotation it will reflect from.
This was everything for a 2D environment, but I think if you know this, you can do the same in a 3D environment like Minecraft
Wow, that was very much