You may argue that the role of language is communication. It's not that I disagree, language participates in communication but it is not the main module there, implementation-wise.
Pointing
According to Wikipedia (https://en.wikipedia.org/wiki/Pointing), "In much of the world, pointing with the index finger is considered rude or disrespectful, especially pointing to a person." How then are humans supposed to indicate relevant objects to others? That's what language is for.
Consider the following picture.
Now, consider the phrase, "Pick the red car." You may say that "red car" encodes all the necessary information to perform the "picking". Does it encode the "location"? Obviously, your perception will help you to locate the red car.
Consider a different request, "Describe the red object." Does the phrase "red object" encode all the information about it? Obviously not. Again, perception comes to the rescue.
Now, close your eyes and describe the yellow object. With your eyes closed, perception is not helpful. But you have a memory. Most likely, however, you may require one more look to describe that object properly. Why? Our memory is limited. It keeps only a few items. For example, "there are 6 cars in the picture". Details are lost. To remember details, next time try to ask yourself various questions about a scene and answer them. Adding emotions (making questions or answers funny or strange, for example) will improve memorization even more.
What about, "Describe the red car from the under"? Perception and memory will not help. This time you have to use imagination. Your description will not be accurate but that's OK.
Note that the references used above did not provide/encode all the information about the relevant objects. They did not even provide all the required information like "location". What they did was guide your attention to the relevant objects and then your perception/memory/imagination did the cognitive heavy lifting.
Do not limit the linguistic pointing only to objects. Language can point also to actions or relationships between objects, to time moments or periods. But most importantly, language allows to point at the connections. This last pointing allows us to connect objects to actions in time and space.
Context
The word "context" is used often recently, but most often it is used with respect to textual context. I do not claim that it is the incorrect or improper use of the word. What I claim is that even then context belongs to the objects realm and not to the words realm. When we read text we imagine objects standing behind the words. Those objects are the context, not the text.
Context has objects. Objects have properties (I know you waited for them). Depending on the object, some property or a combination of properties identifies that object uniquely in that context.
Concepts
Properties may be considered as dimensions. Each one of them is divided into ranges. The property "color" has ranges "red", "blue", "yellow", etc. The property "fruit" has ranges "apple", "peach", etc. The property "apple" in turn has ranges "Red Prince", "Golden Delicious", etc.
Yes, categories do not refer to objects. They refer to the ranges of comparable properties. Those ranges may be divided further into subcategories. Not a single category describes an object in its entirety. It may group some of its properties to enable further comparisons.
Concepts/symbols/categories refer to ranges of comparable properties. Because of that, we are able to address various objects using the same concept - when the respective property has a value from that range.
Please be careful with ranges. They may be relative and context-dependent. For example, in one context we may have a "big pencil" and in a different context we will have a "small whale".
Another warning is about words. The same word may refer to ranges in different properties. For example, "key" may refer to properties "tool", "pitch", "programming term", etc. Polysemy makes language wonderfully efficient and compact.
Filtering
If we want to point at relevant objects in any context, we should start by evaluating the properties of the relevant objects and all the other objects in that context. We will place all the objects into different buckets - ranges of those properties.
It is not necessary that relevant objects fall into one bucket exclusively. Please note that we may have relevant "objects" instead of "object". Multiple objects may be addressed one by one if they are different or together if they share some properties that make them unique in a given context.
The process of linguistic pointing involves filtering objects. Or you may apply the chiseling metaphor. I like the filtering one more. Probably it's due to the phrase "Ever sift sand through a screen?" in my favorite Dune by Frank Herbert.
As soon as we determine the set of overlapping filters/buckets containing only our relevant object(s) we may start composing a reference to them. For that, we need to pick up words that refer to the respective ranges of those properties and place them in the proper order. It is similar to how we can construct any object from Lego pieces.
So much for the compositionality. It has nothing to do with "complex concepts". It is about stacking filters in a given context. The stack is always context-dependent.
Negation
There are two ways of filtering objects. Above, we considered one of them when we provided properties that the relevant objects "have". Another option is to provide properties that the relevant objects "do not have". In this case, we also need to add negation.
Consider the following picture.
The "rectangle" range of the "shape" property refers to many objects. The "blue" range of the "color" property also refers to many objects. Stacking them together gives us a "blue rectangle", which refers to still many objects. What about "blue rectangle which is NOT punched"?
Sometimes negation faster filters down the set of objects. That is why it also may be useful.
The only difference between positive and negative references is in how they treat options. The former indicate options that need to fit, the latter indicate options that need to be eliminated.
Please be careful with negation. "Not blue" means all the other colors.
Cognitive functions
The above-described mechanism of selection/filtering based on properties applies to all cognitive functions. Just carefully determine the set of initial "objects" and properties/constraints to be used for "chiseling". I will leave it as an exercise for the reader.
A couple of additions.
[1] We can point to an object in many ways other than verbally - for example, by shifting your gaze from your interlocutor to the corresponding object. That is, pointing to an object is an action.
[2] Context is not something given from the outside, it is constructed by the subject and in technical language is called a description of the current situation, the content of which depends on the assessment of the importance of incoming information (the most important ones are selected due to the limited capacity of available memory).