Today I was testing one of my application over Android M (6.0). I understood that permission granting in this version is changed and I need to make some changes to make my application compatible with Android 6.0 (here is the details).
As I understood, for example If I want to grant access to write sdcard (Eternal Storage) which is a dangerous permission, I have to ask for user to grant access and then handle user decision (grant/deny) otherwise always my request are get rejected always.
I don't know am I right or not, but I want to know is it somehow against backward compatibility? I mean every application which was running in older versions, need to be changed to get running in version 6.0? If special application is not supported any more, so android 6.0 is where we should say goodbye to it?
And upon this new atmosphere, I need to change my old applications to make them running in Marshmallow (if they need dangerous permissions)?
Backwards compatibility appears to be maintained. From the page you linked,
Therefore, older apps - targeted at SDK 22 or lower - will see the old behavior of permissions granted at install time. Only new apps, those targeting SDK 23 or higher, will have to immediately worry about this.
The page does list one caveat you should be aware of:
What this means for your apps, even legacy ones, is that they need to be able to survive missing a privilege you would ordinarily expect them to have. Test and update accordingly.
What this means for any third-party legacy apps you have installed is that caution must be exercised when revoking their permissions, as apps which assume their privileged actions will succeed may have issues when those permissions are unexpectedly revoked. Obviously the third-party devs should be testing and working around this, but that may not always happen.