dnn:profile is just a tag to recognize that you use this line inside your .ascx :
<%@ Register TagPrefix="dnn" TagName="Profile" Src="~/Admin/Users/Profile.ascx" %>
ctlProfile is the ID of your tag based on your tagprefix above. That's the ID that you want to manipulate from code behind. pnlProfile is just a panel control to show or hide the view of the profile.
For question number one, CMIIW, did you mean that you want to show User Profile to your custom module ? For example, to show user profile from logged in user ?
If so, first put Profile.ascx inside your .ascx :
<%@ Register TagPrefix="dnn" TagName="Profile" Src="~/Admin/Users/Profile.ascx" %>
Then, add the control:
<dnn:Profile id="ctlProfile" runat="server"></dnn:Profile>
In code behind, add this code in your Page_Init method (or in another method based on your scenario) :
ctlProfile.ID = "Profile";
ctlProfile.UserId = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo().UserID;
Then you can load the profile's value from Page_Load (or in another method based on your scenario) like below :
ctlProfile.DataBind();
Is that what you mean ?
CMIIW.