Are the index here will suffice to make the query faster?
1,2,3,4,9,10 -- all the same pattern; all good.  The PRIMARY KEY qualifies as an INDEX (and UNIQUE).

The PK is often faster than a secondary key.  So, do not add INDEX(id) to a table that already has PRIMARY KEY(id).  There can be only one PK on a table.

6 - good

7,11 - Needs improvement:  Composite INDEX(category, date), INDEX(user_id, date)

8,12 - handled by indexes for 7,11

14,16 - OK as you state.

edit 15 - INDEX(msg_url, date)

13 - discussed in the other thread

To summarize:

users_table:

PRIMARY KEY(id),
INDEX(user_email),
INDEX(user_link),
INDEX(user_recover_link)


post_table:

PRIMARY KEY(id),
INDEX(category, date),  
INDEX(post_url),
INDEX(user_url),
INDEX(user_id, date),
INDEX(msg_receiver_id, msg_sender_id, date)


msg_table

PRIMARY KEY(id),  ??
INDEX(msg_receiver_id, msg_status),
INDEX(msg_url, date)