In PUP-9303, the handling of sublocated expressions was refactored and the SublocatedExpression class is no longer needed. It had to remain in Puppet 5.x and 6.x because logic that processes AST may have references to this class even if the parser (after PUP-9303) does not generate this expression.
Honestly not sure... Inclined to say no, though. I don't fully understand the statement about why it couldn't be removed previously though, so we should make sure we have a grasp on that before answering that.
No need to deprecate other than in release notes IMO - only highly specialized logic that deals with parsing would be affected. For example nwops debugger, maybe puppet strings.