1- What’s the difference between taskEnterCritical, portEnterCritical
taskENTER_CRITICAL() is a macro that calls portENTER_CRITICAL() - the idea being that things that start ‘task’ are part of the API and things that call ‘port’ are not meant to be public functions. There is nothing to stop you calling the ‘port’ version - it will do exactly the same thing. Also the naming convention falls down a bit when it comes to macros like portYIELD_FROM_ISR(), for which there is no ‘task’ equivalent.
and portDISABLE_INTERRUPTS API functions?
That is not part of the public API and should not really be called. It does not handle nesting so can break the nesting if any exists.
The M0+ does not have a basepri register like the Cortex-M3/4/7 so global interrupt enable/disable is used.