If you want to start contributing to a complex open source project, there are different approaches depending on how well prepared the project is for new contributors.
Some projects label some issues as "good first issue." If you find those, go ahead and comment into the issue that you are interested in resolving it. It helps to discuss first what you want to change, and especially ask if the issue is still relevant and the text in the issue still up to date. You may then even get some help and some pointers what to watch out for when implementing, which help you understand the code better.
If there are no such issues but you have some ideas anyways, you could create an issue and discuss the idea.
If you don't have any own ideas, you can make an issue asking what issues are good for first timers.
But in the end, always communicate, and sometimes also don't fear to create a prototype if the community around a project does not seem to know well what they want for certain issues.