You can certainly get a user’s Tweets via the user_timeline endpoint - per the documentation it is limited to the most recent 3,200 Tweets and requires paging. Other than that, there’s no limitation on the Tweets returned.
All Twitter APIs require authentication. In this case, any authenticated user can request any public user timeline, but only the “owner” can see a protected timeline, so you’d need to be authenticated as the owner to pull a protected one.
Retweet data and mentions are treated as “perspectival” attributes i.e. the numbers may differ depending on who the authenticating user is, blocks, mutes etc. These are not available via direct API calls, and in my experience most platforms that try to offer these tend to perform counting via the Streaming API to work out the values.