Node.js is a JavaScript runtime built on Chrome's V8 engine that allows JavaScript to be run on the server side. It is single-threaded, non-blocking, and asynchronous which means it relies on callbacks and an event loop to handle concurrent operations like I/O instead of blocking threads. The event loop handles callbacks by placing them in a queue to be executed once the current thread is complete. This allows Node.js to handle a large number of concurrent connections efficiently. Some common uses of Node.js include real-time applications, proxies, and chat applications due to its asynchronous nature. It is not well-suited for heavy computation or large web applications.