Trump has fired lots of high level people in his administration - but not Sessions. Why?
Because for some reason, he cant. Trumps pointing out the failures and foibles of Sessions is telling us just that
Yes he can. The problem is what to do next. Anyone he nominates to replace Sessions will have to be confirmed by the Senate. They mostly hate Trump and feel loyalty to their former, and most likely future, fellow senator. If Trump fires Sessions the Senate might take the opportunity to publicly embarrass him by declining his replacement nominee. They will certainly make a public spectacle out of the confirmation process. So, Trump has to bide his time and wait for the right opportunity to fire him.
If Trump fires Sessions, then Congress has to approve his replacement, which would not happen before the MidTerms. And guess who would take Sessions' place until Trump's nominee got through...that would be Rosenstein!