This is a very common question too.
The diagram is a pictorial description of the differences followed by some explanations.
Starting from the bottom:
-Cortex-M23 is an implementation of the ARMv8-M architecture. Full details here.
-Using the same debug interface as the other Cortex-M processors.
-Offering the optional micro trace buffer, wake up interrupt controller and fast I/O bus as the Cortex-M0+
-Using the AHB5 specification for the system and memory interface to extend security to the whole system
-Using the latest version of the memory protection specification to simply the setup of regions
-Extends the number of maximum interrupts to 240
-An optional embedded trace macro cell to expand the trace functionality
-Updated debug components that enhance debug operations and simplify usage
-Exclusive memory access instructions to simplify multi-core designs
-Instructions for divide operations to boost performance
-Stack limit checking in hardware when security is implemented
-TrustZone for software and hardware isolation
All the key features are configurable and optional.
In case you have not found it yet, there is a white paper with technical details on Cortex-M23 and Cortex-M33 processors here.