I got a short question: If I apply the array modifier, are the objects still instances or are they converted to real objects? I also don't want to change these objects.
No. They are never instanced, even before the modifier is applied.
The array modifier makes a new copy of the mesh for each repetition, storing the same geometry over and over. This allows other modifiers to make modifications to the mesh as a whole. Unless you separate them after applying the modifier, they are all one object and part of the same mesh.
So they are never instanced, because they are never actually separate objects.
To instance objects with an array modifier, you could try using the technique in my answer here.
Some additional information for general reference even though this is an old question...
I tested the use of array mod versus duplicates on a fairly simple object I’m working with to compare file size etc. The individual object has 197 verts and 222 faces with a combination of procedural and image textures and file size 528k. I needed a total of 5 copies of the object.
Using ARRAY mod the file size was unchanged,
Clicking “Apply” array the file size became 651k
Duplicating with ALT D the file size became 537k
Duplicating with SHift D the file size became 669k
In all versions there are 990 verts and 1110 faces. Array modifier before and after clicking apply remains as 1 object whilst regular duplication becomes 5 separate objects.
The difference in this example isn’t much but on a large scale or complex scene the choice between duplication methods could have a significant impact.