In the database, (a lot of) different 'things' are stored.
This means that the database can get big, and searching it can take time.
To make things faster, Plone uses 'indexes'. The reason for using indexes is 'faster search'.
Imagine we have a content item (of type 'ToDo').
This has a field 'assigned to'.
For 'SomeToDoItem', the 'assigned_to' field is (for example) storing the ID of the 'assigned user'. This way, the view (template) of that shows 'SomeToDoItem' can 'look up' user '123' and show his/her Name, Email, Picture etc.
But: Storing all those 'properties' on the 'SomeToDoItem' is unpractical (the email / picture might change) and slow (since it would store information that is 'saved someehere else' (in the profile of user '123').
When using 'indexes', it is best to store as little info as possible, and then 'look up the other info of that user with the Api (or similar).
So, about the 'assigned_to=AAA' is the 'right way to get the user. After that you 'look up user 'AAA' and gets his/her email, phone, picture or whatever, probably by something like: 'mysite/plone/@users/somebody"
https://6.docs.plone.org/plone.restapi/docs/source/endpoints/users.html**strong text**
About the 'priority' and 'priority_string' (I happen to know):
Because there is/was a 'bug' in collective.collectionfilter, there are two indexes ( since 'Bool' and 'numbers' did not work well with the filter')
Basically, these indexes are the same, but one is stored as a number and one is stored as a string.
So, the index 'priority' is a number ( 1, 2, 3)
and the index 'priority_string' is a string ( '1', '2', '3')
About 'not worked': Make sure that there is content with 'that priority' (try priority_string="2" or priority=3 )