Page tags vs Topic

Is there a difference between the properties tag:: and topic::?
If there is not, does that mean one can use whichever of the 2 one wants?

What makes them similar?

As far as I understand, all properties are like labels. Some, however, react differently, like e.g. icon::, alias:: ……

I don’t think page tag and topic react differently from one another, but I am not sure, hence my question: are they different, and if so, how?

Unless you have made property-related changes to file config.edn, both tag:: and topic:: are common properties (i.e. not built-in). That means that they behave/react the same way, although remaining different to each-other. In contrast, property tags:: (plural) is a special built-in property similar to alias::, in treating comma-separated values as separate page references (entry :property/separated-by-commas in config.edn). Likewise, special built-in property title:: is similar to icon::.

OK, I had not picked up the tags:: and tag:: difference.

But when you say:

doesn’t that go for any property? After all, in config.edn it says:
By default, property value separated by commas will not be treated as
;; page references.

That does not suggest that behavior is limited to built-in properties.

For that reason I said “Unless you have made property-related changes to file config.edn”, which is exactly for customizing the behavior beyond what is built-in.

Right, but you have not answered my question:

in what way does the built-in, non-changed tags:: behavior differ from topic::?
I know how alias:: reacts differently from all others, but what about tags::?

Have a look at the following thread:
The difference between [[page links]], #tags, and properties::
which gives an overall explanation. Section “Special Case: Page Tags” in particular describes what is special about property tags::
For reference, Built-in Properties in the docs.

OK, that makes it clear indeed.

This comment:

tells me that tags:: in effect acts like a simple query {{query (property tags tagname)}}, right?

I would not say that tags:: is a query, rather that tags:: is used as input for a built-in query that runs on each page. I would suggest to create a temporary testing graph and add a few pages to see the behavior first-hand.

True. I did not say tags:: IS a query but acts like one; no property is set up as a query.

Anyway, thanks for your help and patience, I appreciate it. I will mark your comment with the link to Aryan’s page as the solution.