Well, you don't strictly need to do those things, but it simplifies things a little by replacing one complicated expression with several simpler actions.
As for why it's complicated, that's because the "Responses" output from the "Start and wait for an approval" or "Wait for an approval" actions is an array. In other words, even if you only assign an approval to one person, the properties of their response are stored as a single-item array. Here is a sample from a test flow I have:
[
{
"responder": {
"id": "<guid>",
"displayName": "Last,First",
"email": "email@domain.com",
"tenantId": "<tenant-id>",
"userPrincipalName": "email@domain.com"
},
"requestDate": "2021-01-08T15:03:44Z",
"responseDate": "2021-01-08T15:04:03Z",
"approverResponse": "Approve",
"comments": "blah blah blah"
}
]
Because "comments" is a property within an array, you can't directly reference it within the "int()" expression. That's also why, when you call that property in the "append to variable" (or, you could use a "set variable") action, Power Automate adds an "Apply to each" loop. So, if there are 3 responses to an approval, and you use the "append" action, varComments will include each responder's comments stuck together (if you used "set", it would contain only the last responders comment, since each subsequent iteration of the loop would overwrite the variable's contents).
Now, don't get me wrong...there are probably a half-dozen other ways to accomplish this same result. That's one of the things that is simultaneously exciting, frustrating and a little frightening about Power Automate. The method/pattern I use is one that I came up with mostly on my own and it's worked well for me, but you might find another way to do it that's easier for you. The key is understanding that the format of the data (e.g.: string, integer, array, object, etc.) impacts how you can use or reference it. In this case, it's not possible to convert an array of strings into a single integer value, so you first need to convert it from an array of strings to a single string; once you have that, you can convert it to an integer. There are a number of good resources out there on handling different types/forms of data in Power Automate. Specific to arrays, I recommend this page: https://sharepains.com/2018/07/10/power-automate-shed-some-light-on-arrays/