Do you have any idea how many lines *maximum* you will want to use per "screen"?
I don't want to waste a lot of time with Q&A, so to get you started:
It's easy to build a list that's variable, but you're limited to what you can fit in a frame. Use a 100% transparent PNG as the exact size of the icons you will be using. You can turn any image into a Drop Zone and using a transparent PNG, it will not show until you replace it with the image you want to drop. [Optionally, you can use a basic icon - like a logo or something - as an image placeholder and with the image selected, select Image from tabs in the inspector and click the Drop Zone checkbox.]
As for the text... I'd probably recommend applying a Sequence Text behavior with Custom timing that you can keyframe in FCPX. You would enter the text as a paragraph, basically — just newline to a separate the lines of the list. (You can do a lot more than just fade in/out with Sequence Text, you could even move and rotate entire lines of text out at a time [not just characters.]) You might find an action you like from the pre-built text behaviors - I'll help you convert it to custom control... just let me know which one. You'll be able to line up the text against the icons with the Line Spacing parameter. This will also allow you to change fonts. There's actually no need to publish this parameter as it can be found in the Text Inspector in FCPX.
To animate the drop zones, build the first one. Add a Behaviors > Custom behavior and add the parameters you want to animate (in and out!) When you finish the look you want, you can duplicate the image/drop zone with the custom behavior and simply offset their starting times (move the playhead and type Shift - [ to move the starting time of the selected layer. Using this technique you *move* the timing of everything keyframed in the custom behavior - If you set an in-point and/or out-points, you run the risk of trimming the keyframes along with the timing of the custom behavior.)