First, a couple useful links:
http://en.wikipedia.org/wiki/Language_Integrated_Query
http://msdn.microsoft.com/en-us/netframework/aa904594.aspx
First off, Linq stands for Language Integrated Query. It is a way built into .Net to allow you to programatically set up and interact with databases that you have created. Note: This is not a database system, it simply is an interface to allow applications to interact with the database. You still need a proper database system to be set up to connect to.
LINQ allows a programmer to set up a mapping of all the tables within a database (a simple drag/drop from the server explorer allows all current tables, attributes, relationships, etc to be translated over) which allows the program to then see the database in an object oriented fashion. On can then set up the ability to interact with database as if they were simple objects with attributes.
Low level queries are very simple to write with LINQ as well, as you can call to retrieve rows/columns easily and store then in datasets that can be further manipulated without continued database interaction.
Basically, what linq does is allow you to avoid writing a million "Select ID from Table where Name = Bob" style queries and allows you to really simplify the interactions between the business logic and the data layer. Further it makes it rediculously easy to store the results in very convenient ways to be used in datasets, views, and what have you.
I am by no means a LINQ guru, as mentioned I have relatively limited experience with it having used it only briefly on a project at work. If anyone has more to add or minor corrections to what I have said, please do so


