Before I start let me tell you that I have read all the other questions regarding how to join an open source project.
This question is about how to write a bug fix for a problem that the user faces in open source code or project.
My primary questions are-:
No, you can focus on the specific part of hte code base which makes the project not working like you would like it to (this is called "scratch your own itch")
You should clone the full repo (this is how a decentralized VCS is supposed to work).
For a GitHub repo, fork it first, in order to have the right to push back to that fork, and make a pull request from said fork)