User Interfaces are by design meant to be for people. People interact with your software using the user interface (UI) you give them and in order to get a good experience the UI should be friendly and well thought out. There is no thing worse then having a great program be underappreciated because the interaction is suboptimal. Likewise; a immature program might be seen to have great potential and a pleasure to use if the user interface is well designed.
Making a user interface pleasant to use already implies that you have to know about the user. Users are people and a lot of research on people can be used to reach the best interaction results. These guidelines themselves are a result of said research.
Where the guidelines end is where the application design becomes most important. Designing an application for people in construction should give a different result then a design for doctors in hospitals. The assumptions the application can have about common knowledge is obviously very different between these groups of users.
Applications always have a target audience. The audience can range from a small set of people to a huge market with overlapping skill groups. It is important to introduce features with the target group in mind.
For example a ledger application (Kalculate) targeted at accountants comes bundled with a new feature; a simple pop-up calculator. Some time after the new release hits, the sales crew comes back with the sad message that a simple calculator is useless for most accountants, plus most of them will have a calculator on their desk anyway. The feature is removed in the next release.
Just as important is knowing that you are not your user. If you work with your application and have a technical knowledge of the application you are probably the worst person to judge if something is clear and logical to the user. Due to your intimite knowledge of process and the designed workflow will ensure you, as a user, will not make many beginners mistakes. Always do user testing on real users that are the intended audience.
Accessibility is the process of providing the user interface in different forms for people with disabilities like blindness. In order to allow users that are incapable of using the normal graphical user interface (GUI) to interact with your application KDE and Qt have so called accessibility-interfaces for all supplied widgets. This means that attaching (for example) a braille reader to the computer will allow that user to see all the buttons, checkboxes and texts without any extra effort on the application designs side.
The practice of creating user-interfaces which can be reused in a different language. Internationalization (or i18n for short) generally makes sure the texts that are put on screen are translated before they are shown by using per-language translation files. Making the application usable for people in different languages will most of the time be done by translating the texts of labels and button. KDE allows translations of individual strings right from the sources to make the process painless. Showing right-to-left user-interfaces is handled automatically in the Qt toolkit which KDE is build upon.