Mysql query - find out 1000th row from a table for each user
To get all the (1000th) rows, using the primary key of the table:

SELECT du.user_id
     , ua.*                               -- any other column you need
FROM 
    ( SELECT DISTINCT user_id
      FROM user_activity
    ) AS du
  LEFT JOIN
    user_activity AS ua 
      ON ua.pk =                          -- the PRIMARY KEY of the table
         ( SELECT ai.pk 
           FROM user_activity AS ai
           WHERE ai.user_id = du.user_id
           ORDER BY created_at 
               LIMIT 1 OFFSET 999
         ) ;


or using the (user_id, created_at) combination:

SELECT du.user_id
     , ua.* 
FROM 
    ( SELECT DISTINCT user_id
      FROM user_activity
    ) AS du
  LEFT JOIN
    user_activity AS ua 
      ON  ua.user_id = du.user_id
      AND ua.created_at =
         ( SELECT ai.created_at
           FROM user_activity AS ai
           WHERE ai.user_id = du.user_id
           ORDER BY created_at 
               LIMIT 1 OFFSET 999
         ) ;


I guess the number of rows in the table per user is high, so an index on (user_id, created_at, pk) would be good for efficiency.