@odd kiln Well they are fundamentally different.
ActorComponents are reusable Objects that can be added to Actors to extend them. You may add as many of them same class to the same Actor as it makes sense for the given Component - Actor combination. An example are multiple Static MeshComponents (they are ActorComponents in the end).
The actor itself knows about its Components and can interact with them. Other Actors may need to cast to the Actors class to be able to know what components exist and can be interacted with. You may also "search" for a component by class or similar on any actor and not cast, but that's in most cases the wrong approach and not good for performance.
A component may have functions and variables, and can also implement Interfaces just like Actors.
======
An interface on the other hand can only have function declarations (so not even an implementation of a given function). They can be added to other classes which are then meant to override/implement the functions and do whatever makes sense to them.
Interfaces are usually used when you have a case where you expect a common context but the object you deal with doesn't have a common parent class to cast to.
An example is Interaction (player presses E to do something). There may be various actors in your game with which you want to interact but they may not share a parent class which could add a function "Interact" to, that child classes can override. In that case you usually make an Interface and give that the Interact function. Then you add the Interface to any class that you may want to interact with and override the function in the actor. Then you can blindly call the interface on e.g. a traced actor and if it has the interface and implements the function it will execute it, without having to specifically cast to all options. So you basically group the actors under the context of InteractionSystem.