Does it require technical knowledge? Is it difficult?
There are many, many ways to contribute to Ubuntu. Some require technical knowledge, but many do not.
Before contributing to Ubuntu, you should read the Ubuntu Code of Conduct, which lays out a standard of behavior for contributors.
If you've ever had a great idea to make Ubuntu better, then you're qualified to participate in Ubuntu Brainstorm. Ubuntu Brainstorm is a site where anyone can submit, discuss, and vote on ideas to make Ubuntu better.
A new project that is looking for contributors is the Ubuntu Manual project. According to their website,
Their Get Involved page says they are looking for authors, editors, translators, programmers, and designers -- there's something for everyone!
The Paper Cuts project calls for users to submit bug reports on small usability problems (paper cuts). This requires almost no technical knowledge and has a direct affect on the Ubuntu experience.
Ubuntu strives to look good, and it takes artists to make that happen. Submitting art is an easy way to make a visual impact on Ubuntu. Check out the Artwork wiki page for information about that.
A really fun way to get involved is to join and participate in your Local Ubuntu Community (LoCo). You can check out the list of Ubuntu LoCos to see if there is an active community near you. If there is none, you can start one yourself!
If you're the programming sort, there's plenty of room for you to pitch in. I'm not an Ubuntu developer myself, but the Developers page on the Ubuntu website is a good place to get started.
At the beginning of a new project called Operation Cleansweep, there were over two thousand potential bug fixes on Launchpad just waiting to be applied. This project works to review those patches and get them applied to their projects.
There are innumerable ways to contribute. These are only just a few! Technical knowledge is helpful, but not absolutely necessary.
There are many ways how you can be useful for the ubuntu community in general. Some aspects require technical knowledge and others don't. Each and every one of the community members have something they can contribute back if they so wish. A good place to start looking for your own place in the community is in the community page. This page lists various good places to start looking for something that you can help with.
You should keep in mind that even if you can't find anything you can do on that page, it doesn't mean that you can't still be a useful community member.
Contributing to any Open Source/Free Software project does not necessarily require technical skills. Of course one main part of developing software is writing code. Here you will indeed need technical skills. But the user of that software is usually a non-technical person. So if you want to contribute you can take the role of that user and test the software. If there is something which annoys you or if there is a bug, you should inform the developers about it. Send them a detailed description of what you want to improve or how the bug occurs and can be reproduced. This will help to make the software better.
Another thing what usually helps a lot is writing documentation. How can/should the software be installed; what first steps should a user do; are there special settings which ease the use of this software etc. Also important is to translate existing documentation into another language.
Ubuntu uses Launchpad for most of those tasks. You can get a login there and contribute. Give it a try!