Why inside the always block with posedge condition, sees the signal as zero?
Thinking about it in terms of hardware, what value is there at the input to the led_r inferred D-flip-flop at the moment when there is a rising edge that clocks it? Basically you don't know because its input is a rising edge signal (btn_out). It will be somewhere between 0 and 1, though it will probably still be 0 once you factor in propagation delays.

It's a very badly written piece of code (using logic as a clock, probably causing metastability, etc.), and I'm not sure what it is supposed to do. Having said that, if I were to make a guess I'd say it should be simply else, not else if(). You don't need to check it with anything because you know it is a rising edge by virtue of the fact that it will be clocked by the rising edge you are looking for.