A full tutorial is beyond the scope of a post here, but a few main points should suffice to get things moving.
Given the caveats in my comment that this is not likely a good choice for a beginner, start with just the screw.
Place the wall in an orientation where it is aligned with the world axis (the wall should not be rotated relative to the axis, the wall should be one of the axis aligned planes). This is necessary so as to simplify the rotation of the screw. Next, place and align the screw to a hole into which is should be driven, with the tip of the screw touching the hole.
Attach a script to the screw object which will operate the screw’s motion without physics. Search for how to use Time.deltaTime. Create a float representing the rotation of the screw (starts out zero). Using the editor, figure out which of the 3 localRotation values rotate the screw in the direction of a screw turning the same way as being driven by a screwdriver (which comes later). Fashion code in the Update function of the script (not FixedUpdate since this isn’t using physics), so that the screw’s rotation (the float) increases gradually over time (using Time.deltaTime), and apply that using the eulerAngles property of the screw’s localRotation. This should make the screw turn. Adjust so the speed makes some sense.
The screw will turn without end like a wheel or gear at this point. Next, add to the script a motion of the localPosition property of the screw so that it moves slowly toward the wall while the screw is turning. Create a float for this speed like the one used for rotation of the screw. Adjust these two values, the speed for turning the screw and the speed for driving the screw toward the wall until the appearance is reasonable.
Observe and test for the point at which the screw is fully “in”, so you can then sense this in Update and stop the rotation and the drive motions - the endpoint of screwing the screw into the wall.
Once completed, you can place and align the screwdriver so it is positioned appropriately relative to the screw, then apply the same rotations to the screwdriver. This can be done by temporarily making the screwdriver a child of the screw, or you can duplicate the Update function to independently control the screwdriver and the screw. Either way, you’ll need to fashion a way to start this ‘animation by code’ and then after the screw stops, remove the screwdriver (which may also require you to ‘deparent’ the screwdriver from the screw if that approach is used.
I realize that for a beginner this may be more than makes sense at first. This reflects the fact that this is more than a beginner should consider.
Now, I should point out that while you’ve said you want to start out small, I think you’ll need to start out smaller. I’ve attempted to incorporate that notion in the means by which the screw is made to operate (separating rotation from driving). There are lots of ways to implement this concept, including making animations in Blender or 3DS Max, using them for the motions involved instead of coding.