Key is one or more columns what you use to select a row or set of rows, or ensure uniqueness (a unique key means no other row in the table can have the same value, that's usually the Primary Key).
Index is like a special table that contains only the keys from a real table; it is ordered by the key values. Used to give fast access into the real table.
Foreign key is a key in table A that links you to a row in table B (usually a Foreign key in A points to the Primary key in B, but the key doesn't have to be primary in B to exist as a foreign in A).
For example, you might one table with peoples' names and a unique (primary) key ID column; and a second table of addresses that has a foreign key column which is a person's ID in the first table so you can link thee address to a person.