I think originally the idea was to differentiate between hardware related packages (MACHINE_FEATURES) and software related packages (OPENPLI_FEATURES).
But looking at what is currently implemented, I see no logic whatsoever, there therefore no reason to maintain this distinction.
If I look at meta-openpli, I can only find:
./recipes-openpli/images/openpli-enigma2-image.bb: ${@bb.utils.contains('OPENPLI_FEATURES', 'ci', 'enigma2-plugin-systemplugins-commoninterfaceassignment', '', d)} \ ./recipes-openpli/images/openpli-enigma2-image.bb: ${@bb.utils.contains('OPENPLI_FEATURES', 'dvd', 'enigma2-plugin-extensions-cdinfo enigma2-plugin-extensions-dvdplayer', '', d)} \ ./recipes-openpli/images/openpli-enigma2-image.bb: ${@bb.utils.contains('OPENPLI_FEATURES', 'fan', 'enigma2-plugin-systemplugins-tempfancontrol', '', d)} \ ./recipes-openpli/images/openpli-enigma2-image.bb: ${@bb.utils.contains('OPENPLI_FEATURES', '7seg', 'enigma2-plugin-systemplugins-vfdcontrol', '', d)} \ ./recipes-openpli/images/openpli-enigma2-image.bb: ${@bb.utils.contains('OPENPLI_FEATURES', 'dvd', 'cdtextinfo', '', d)} \ ./recipes-openpli/images/openpli-enigma2-feed.bb: ${@bb.utils.contains('OPENPLI_FEATURES', 'kodi', 'enigma2-plugin-extensions-kodi kodi-addons-meta', '', d)} \ ./recipes-openpli/images/openpli-enigma2-feed.bb: ${@bb.utils.contains('OPENPLI_FEATURES', 'qtplugins', 'enigma2-plugin-extensions-qthbbtv enigma2-plugin-extensions-qtstalker', '', d)} \ ./recipes-openpli/images/openpli-enigma2-feed.bb: ${@bb.utils.contains('OPENPLI_FEATURES', 'openhbbtvbrowser', 'enigma2-plugin-extensions-openhbbtvbrowser', '', d)} \