1:exe文件(二进制可执行文件)其实本质上依旧是一段代码、指令的组合(当然,长度惊人),它其实是系统命令、系统调用、源码编译产物、各种代码库的混合物,是源代码经过编译器编译,借助链接器链接系统相关、各种库才完成的,当然,因为它内部都是二进制为主,所以用文本类软件直接打开来看会发现大部分是乱码,而且有大片空白(空白并不一定是真的空白,可能是软件不予以显示的、没有对应字符含义的数字)
C、C++ 都是编译类型语言,源代码需要编译器编译过后才能形成二进制可执行文件(exe),因此不具备类似 C# 等解释型编程语言的动态生成exe之类的功能(且这些功能更多的是依赖开发环境,不然为何VS会有win系统下宇宙最强编译器的称号呢)
2:利用C自然可以编写出窗体程序,就如同汇编也可以做到(汇编的可以在论坛的汇编板块和代码帖搜索到,是个远古级别的前辈写的),同理C也能做到,举个栗子,vim也是有windows版本的,它使用了一些三方库实现窗体程序,有兴趣可以去github看看vim的源码(代码量巨大,非常难消化)。
C不适合开发窗体程序,它只能借助第三方库、系统接口等实现窗体程序的窗体(如果有人要用纯C实现也行,不过这种存在不是我们凡人能碰见的,此处不包括此类人),比如win的winAPI接口,或者借助gtk或者其他第三方库,都需要投入大量学习精力,但是回报甚少,且效率低下,甚至gtk这种开源库的学习还只有英文文档给你,win的话winAPI可以通过《windows程序设计 第五版》学习以及借助微软官网的MSDN获得相关的资料及文档
不论如何,过于繁杂和效率低下注定C不适合作为个人开发窗体程序的首选,如果仅仅是应用类型的win窗体程序,C#+VS 是首选,拖控件实现功能可不是开玩笑的
3:程序名称是看程序是否是窗体程序,窗体程序的话,可以在程序源码生成窗体的指令处对生成的窗体名称进行更改,而图标的话,VS的项目设置可以很方便的变更程序的图标,但如果是已经编译好的程序,又没有源码,那么逆向工程和借助工具才能处理这种需求,在自行编写都做不到的情况下进行逆向工程,恐怕不要太有挑战性,部分工具可以修改这些东西,但这不在此处讨论范围,有兴趣可以自行百度
至于控制台程序,控制台程序过于简陋,不借助系统接口实现或第三方库处理是没有图标的(一般都是如此),而程序名称则会默认为可执行文件(exe)的名称
以上回答为个人理解,难免有误,更多相关的东西,建议自行百度,谷歌,必应等