Player controller blueprint has a copy on client and server side. So server copy can tell client copy to do something and client copy can ask server copy to do something.
Widget blueprint exists only on the client side, so its “Server” events cannot be really executed on the server side.
That’s not entirely true. Take for example a listen-server player, he has his widgets on the server.
The thing is that actors that are not replicated can’t fire RPCs. UUserWidgets are UObjects and not AActors, and they are not even replicated. For UObjects to replicate and be able to fire RPCs extra steps must be taken.
Anyways, back to the example above, to be able to fire server/client RPCs you must do that in client-owned actors, which are typically PlayerController/PlayerState and Pawn in case it’s possessed/owned by a PlayerController.