NEFT, National Electronic Fund Transfer, is highly used, in terms of number of transactions, method of transfering money in India across the banks. NEFT is not immediate. All the transactions are queued up and executed (transferred) by RBI every 1 hours during working ours. If you do two NEFT transactions, it is not guaranteed which transaction will happen first. So, if you transfer from Bank-A to Bank-B (transaction 1) and your friend transfers from Bank-B to Bank-C, it is not guaranteed which one happens first. If account in Bank-B has no balance, few trasferes can even bounce.
Because of this reason, most banks deduct the amout from your account balance and credit it to RBI's account immediately as you initiate an NEFT, eventhough the real-transfer occurs after an hour or so.
But, if you are transfering money within the bank, say - SBI to SBI, but to someone else's SBI account, you can use inhouse (intra-bank) money transfer, which is quick, safe and no transfer charges. It is so quicky that the money gets transfered at real time, ie., it takes less than a second.
NEFT and RTGS are chargeable as per RBI, but most banks, like Citibank, HSBC, ICICI bank, Axis bank do not charge for NEFT, while SBI has nominal charge of Rs 5/- as of 2013.
NEFT has a limit of Rs. 200,000/-. For higher amounts RTGS is the only option. RTGS stands for real-time gross settlement and is very similar to NEFT in terms of technology, except that RTGS happens in no time, in a matter of few milli-seconds. I am not sure, RTGS limit should be around Rs 1 crore, or even more.
NEFT and RTGS both are safe, if you enter the account number carefully. If you enter a wrong account number, especially if you enter the last few digits of the account number wrong, it is highly possible that the account exists and the amount gets transferred to the wrongly entered accont number. This is the reason why, many banks asks us to enter the account number twice, just like changing your password, so that it is unlikely that you enter same-wrong-account-numbers in both the fields.
IMPS stands for Immediate Payment Serivice and is secure and safe. IMPS is not offerred by all the banks in India as of now. IMPS transfer generally requires a mobile number and a per account generated IMPS number - which could be a 10 digit number. The advantage with IMPS is its annonimity and privacy. You do not have to know the name of the account holder nor their account number.