It's similar to me writing a paper and using the word 'my' before 'arm'. the sentence 'arms are tattooed' has a different meaning than 'my arms are tattooed'. using the word 'my' indicates WHICH arms are being talked about.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
If I understand you correctly, it is optional in certain situations. For example, if you have a class-level field called "foo", you can access this field in a method with or without using "this", so it's optional.
However, if you also have a variable in your method with the same name, you must use "this" in order to refer to the class-level field.
You see this sort of thing a lot in setter methods, where the method parameter usually has the same name as the field.