Minimizing/avoiding data repetition and choosing between compound keys and unique indexes
Does making foreign keys lead to data duplication / repetition or is
  it just a reference / pointer to data stored in the parent table ?


Foreign key restricts the possible values in one table's column accordingly to the presence of the same values in another table's column. Values are stored in the both tables so they are duplicated. To avoid (in fact - to reduce) duplications normalization should be used. That's means you have the reference table where all distinct values are stored and all other tables contains only IDs of that values.


  Should compound keys be avoided wherever possible ?


No. Even more, compound keys are the only way to speed up the query with complex conditions that involve multiple columns. Compound keys can be avoided by the price of performance.