Do we need to debounce the switch for key release
Generally you want to detect a keypress. (This isn't always the case: in most GUIs such as Windows, etc., the action isn't performed until the key is released. This allows moving the cursor off the button to cancel the request. Since there is no direct equivalent in hardware this does not apply to your situation.)


  I understand that key debounce has to be considered either in Hardware (HW) or in software (SW) when we press a switch (to avoid make and breaks). 


A better wording might be "to avoid reading normal contact bounce as multiple press and release actions".


  Do we need to take care of key debounce even for key release? (make and break is possible even during release I guess). 


This is up to the user requirements.

             _   _   _   _____________________   _
Input ______| |_| |_| |_|                     |_| |___________
                             _________________
Status _____________________|                 |_______________
                         &lt;--&gt; debounce time


Figure 1. Debounced rising edge. Instantaneous falling edge.


  But since we are considering debounce for key press actions (I am considering in SW), anyway we won't get key pressed output even if "make" is detected when we release the key. 


Correct. As shown in Figure 1 the bounce on key release doesn't retrigger because it's not long enough.


  If we go for hardware based key debounce (I am not hardware person), does it take care of both press and release conditions?


It depends on the design.







simulate this circuit &ndash; Schematic created using CircuitLab

Figure 2. (a) Quick discharge. (b) Slow discharge.

For example, in Figure 2a SW1 will pull the input low instantly but it will take about 10k x 100n = 1 ms to charge back up again. In Figure 2b R3 means that C2 is slow to charge and discharge giving debounce in both directions.

You can read some more about both hardware and software at AllAboutCircuits.