But usually Arduino takes response for these things, for example all timer libraries are good for all Arduino boards and chips, so why is it not the same with the ARM processors ? because I am writing directly to registers?
Yes. A good library will turn the microcontroller hardware into an "abstraction" - a more general piece of code and hardware that will perform specific functions on a wider variety of different hardware. Writing directly to registers bypasses such abstraction. Sadly, many vendor libraries do a particularly poor job of abstraction: "set the timer to mode 12" is NOT abstract, and many highly abstract libraries (like the Arduino "analogWrite()" do a poor job of supporting the capabilities of the hardware. 
(this is because the IDE does not have timer libraries for ARM)
The Arduino IDE does not have "timer libraries" for AVR, either. There are some third party timer libraries for AVR. There are also some third party libraries for ARM boards. If those (different) libraries supported the same sort of abstract functions ("call this ISR after n microseconds"), then they'd be examples of good libraries.
The real benefit of Arduino was to write a code that works almost with all processors, what am i missing here?
How can I choose a chip knowing the code is really not scaleable ?
Some of the responsibility lies with the application programmer. If you want your code to be portable across many boards, you need to avoid using functions, capabilities and libraries that are very specific to a particular board. Yes, that means using digitalWrite() even though direct port access is faster. It means using more generic timer functions, and picking libraries that have been implemented on multiple boards over libraries that were only implemented once. You can always write your own libraries (or hire someone to write them for you) that supports the particular functions on the particular boards that you are interested in. It is one of the ... responsibilities of a good software vendor to add new technology to the hardware they support, but it's not instantaneous or cheap.
The Arduino does not have any timer library for the Zero, nor PWM,
The Zero certainly has PWM via analogWrite. In fact, it apparently has it on more pins than an Uno. ("All but 2 and 7" says the datasheet.)
If you want a timer library for Zero, you'll have to at least describe which timer functions you are interested in, or which AVR timer library you'd like to be compatible with. In general the (several types of) timers on the Zero are more complicated and have more features than the AVR timers (up to 32bit counts, for example. But if you started requiring 32bit counts, you'd likely never be compatible with an AVR timer library...)