How are difficulty level and block reward determined and stored in decentralized fashion in Bitcoin? I know the difficulty level and block reward are periodically adjusted in Bitcoin to keep the block time approximately to 10 minutes.

I guess these are not determined by a central authority but rather are determined in decentralized fashion. If so, what are the exact steps involved here? Each node independently computes on their own, propagates and will it be verified?
Each node independently computes it on its own, following the formula:

At every block n with n beingg a multiple of 2016, look at the time stamps of the past 2015 blocks, and change the difficulty for what follows to old_difficulty*(2 weeks)/(time the past 2015 blocks took)

Each node does that calculation to make sure that any new block it finds will have sufficient difficulty in order to get accepted by other nodes on that network. This is all about how Bitcoin is kind of self-organized. A node can find a block with too little difficulty, but that will be next to useless as this block won't get accepted into the chain.