This could get a bit lengthy, you'd better google it, too.
Many years ago, I went back to one of the community colleges to learn Java; it was not for me, with Fortran and Python, I am doing just fine, thank you very much. So, basically, I don't know Java.
I personally find it unfortunate that, in Java, they chose the term "parse" for this minimal, limited type conversion where the string contains nothing else but numbers (which, I presume is a condition for Integer.parseInt() to work).
For me, parsing consists of just looking for a character or sequence of characters from among a larger sequence of characters; it does not include conversion of any kind just yet, returns text, too.
Parsing is that kind of action you expect to happen in C functions like "strchr", "strstr", and the like; and in "replace()" and the 'in' operator in Python.
More generally and usefully, parsing is done with regular expressions. I don't think this is part of ANSI C, but it is available via the POSIX regular expression library; in Python, "import re" will do. A quick google search revealed pretty good regular expression capabilities in Java: s.matches(), s.replaceAll(), Pattern.compile(), etc. That's parsing!
If short, the way I see it, when talking about type casting the concept of parsing shouldn't really come into play. When I hear 'parsing', I most often think regular expressions.
It seems part of the problem is what "type casting" means in different programming languages, as they offer different capabilities.
Some say "casting" means interpreting the same memory byte sequence with a different "mold".
More generally, "casting" means data type conversion and, so, it requires interpreting the original memory byte sequence according to its own type, converting it and storing the new value in its own manner. Even implicit type casting that everyone takes for granted when adding an integer and a float requires the integer to be up-converted and re-stored in a different manner.
So, when working in a higher language and not worrying about memory representation, when I as a human see with my own eyes a float '123.0' and need it to be an integer '123', I ask to type cast it. In Python, they have gone the extra step of saying that if you see a string "123", you can type cast it to an integer '123'...it is no different as both transactions required data type conversion.
Anyway, you can google type casting or type conversion and find quite a few discussions/explanations/examples.