Mobile apps can be divided into three groups, and which one you choose will determine what programming language you’ll need to learn: native apps, hybrid apps, and web apps.
With native apps, you use the native programming language for that device, such as Objective-C or Swift for Apple devices, or Java or Google Flutter for Android devices. What you code for one device cannot be used on the other device. However, their strength is that, with best code practices, you’ll get the smoothest and fastest apps that have the look and feel of the native environment. You’ll work with different software development kits (SDKs) for each environment (such as Xcode for Apple and Eclipse for Android) to create the final product (such as an apk file for Android). Android apps can be built on PCs and Macs; Apple apps need a Mac machine to compile the final product that is uploaded to the App Store.
You’ll find web sites devoted to app creation by simply filling in some fields, or drag-and-drop software that lets you create a variety of different apps. But whether they’ll get accepted into the Apple Store is another matter; their generalized nature usually disqualifies them.
Web apps are simply web pages hosted on normal web servers, but sized to fit comfortably in smartphones. They are coded with any number of web technologies, including PWA, PHP/MySQL and other database technologies, since they are web sites at heart. They are accessed by smartphones the same way as any other web site; but with a little extra coding, you can provide a custom icon that will reside on the home screen of the device if the user chooses to save your site to the home screen.
Web apps are uploaded to web servers just like any other web site content. Web apps should work well in any device, since they are viewed as any other web page is viewed: in a browser on the device. Nowadays, web designers are creating web apps through Responsive Web Design techniques, which uses media queries and other techniques that allows the content to fit into a wide array of device screen widths.