I made a bow and arrow prototype. Mine was for VR so it was a bit different but maybe my thought process will help you.
I just did an approximation for the pull strength and velocity. But then based on a few test shots I calibrated my fudged math to shoot an arrow at around the same speed you can with most bows in real life.
Here is what I did:
When player starts pulling back, save the initial grab location
As the player moves back their hand, calculate the length between the original and new position. Call this PullDist or something
I divide Pulldist by the maximum length to normalize it, and then just did a power of 2 (which is like PullDist * PullDist). Then I had a nice 0-1 pull strength value with an exponential curve. Probably not 100% accurate but it feels pretty good since arrows with a less than full pull will not go near as fast.
Then to fire the arrow I just set linear velocity, and I set that as a vector with a number along X. So the velocity vector was VelocityPullDistPullDist
The value of that velocity was what I tweaked to get realistic arrow speeds. Basically I debugged that by having the “arrow” projectile BP print debug messages whenever it hit something. I converted that number to feet per second and then I just fiddled with my velocity multiplier vector until I got the desired speeds. Interestingly after doing that, my accuracy is almost the same in VR as in real life.
in my prototype, the string was just debug lines. I had a vector location that was set to be the hand grab location, and then on release I played a sinewave with a timeline to cause the string to bounce a little bit. So no physics but even that little fake string bounce made it feel immersive.
for non-VR this is even easier. You just need to make the user hold a button to pull the sling and then play with making the velocity curve exponential like above. Lots of ways to approach it, I would probably use timelines at first for simplicity.