If we can install rundeck and push jobs towards nodes then why we need chef?
With rundeck, you execute commands. Chef follows a desired state model and applies that desired state, similar to tools like Puppet, CFEngine and Ansible.
This includes the idea of idempotency: Imagine, you have clean servers and older ones and want to make sure that a certain state is configured on all of them. Running a couple of command with rundeck will now work on the clean nodes, but fail on the older ones, because it has been done a while ago. In contrast, Chef's model would be that it recognizes that the system is already in the desired state and does nothing.
Why will we integrate rundeck with chef?
IMHO you would integrate it to run chef-client on your nodes, i.e., to switch to a more push model instead of waiting for chef-client to start (often in intervals of 30min).
What is the thing which chef can do and rundeck can't?
See above. Rundeck in contrast allows to execute single ad-hoc commands, e.g., "what's the CPU load on my servers". This is not supported by chef.
Does chef also support push jobs?
Kind of, not really. There are Chef Push Jobs, which allow you to run pre-configured commands, e.g., to kick off chef-client
on your nodes. There was a recent blog article explaining that Chef Inc. sees this as the main goal of Chef Push Jobs and does not plan to extend it any further. So you can't run ad-hoc commands with that.