Using bare Asterisk, you have to do nothing special to pass the incoming caller ID through, assuming it is supported on both sides. This isn’t the right place for the fine details of FreePBX, but I would imagine that the same is true of that.
To change the caller ID, you can specify it in the incoming device entry, the outgoing general section, or by setting the CALLERID function. I don’t know how those translate to the GUI. You should ask on a forum for the GUI, although someone here may know.
If you are using SIP and you have to set a fromuser on the outgoing side, you will need use an alternative mechanism to send caller ID. Asterisk currently has better support for Remote-Party-ID, but you will have to enable that, and you will have to check whether your service provider supports it. Another method is P-Asserted-ID. For older versions, you needed to use AddHeader for that. I believe there is built in support in the latest version, although recent bug reports indicate it is not completely stable.
Again, I don’t know what support the GUI provides for configuring these methods.