Furigana are hiragana characters used above 'Kanji' in yokogaki (horizontal writing) and on the right of 'Kanji' in tategaki (vertical writing) with smaller font, to show how each kanji is pronounced.
As to which kanji get furigana and which don't, it depends on the level of the writing, article, etc and their formality as well as difficulty for the intended readers.
There are a current list of 2136 standard use kanji, called 'Jouyou Kanji' that in Japanese newspapers don't need to get furigana, but anything out of that needs it as reading aid.
You can find furigana in texts inside educational books, depending on the level and newness of the kanji for the students. There are a specific margin assigned in formal application forms and such in Japan just in order to add furigana when necessary, such as multi-pronunciation names, since kanji usually have a different readings.
Katakana is something used rarely as furigana, you might only see it when there is a need to differentiate between On'yomi(Chinese reading of kanji, usually shown in katakana) and Kun'yomi (Japanese reading of kanji, usually shown in hiragana). That might just happen in linguistic books.
And as a reminder, since it happens a lot due to my experience, furigana is not to be mistaken with 'okurigana', which are part of a word not something out of it, the name is referred to the kana that are used along with kanji in a word, in order to complete it or inflect it grammatically. Take 悲, this is the kanji for 'grief, sadness'. But how to make an adjective, noun, verb etc out of it, and how to conjugate those would be the role of okurigana.
悲しい /ka na shii/ : sad
悲しみ /ka na shi mi/ : sadness
悲しむ /ka na shi mu/ : to sadden